Analisando datas no LibreOffice Calc - existe uma maneira melhor / mais fácil?

1

Eu tenho uma string desse formato específico:

DD/MMM/YY HH:MM AM/PM

por exemplo,

03/Nov/14 9:00 AM

Não consegui descobrir como Calc reconhecê-lo como uma data, então tive que fazer o seguinte para uma string de data em B2 :

=DATEVALUE(
    CONCATENATE(
        2000+MID(B2,8,2),
        "-",
        IF(MID(B2,4,3)="Jan",1,
            IF(MID(B2,4,3)="Feb",2,
                IF(MID(B2,4,3)="Mar",3,
                    IF(MID(B2,4,3)="Apr",4,
                        IF(MID(B2,4,3)="May",5,
                            IF(MID(B2,4,3)="Jun",6,
                                IF(MID(B2,4,3)="Jul",7,
                                    IF(MID(B2,4,3)="Aug",8,
                                        IF(MID(B2,4,3)="Sep",9,
                                            IF(MID(B2,4,3)="Oct",10,
                                                IF(MID(B2,4,3)="Nov",11,
                                                    IF(MID(B2,4,3)="Dec",12,""
        )))))))))))),
        "-",
        MID(B2,1,2)
    )
)
+
TIMEVALUE(
    IF(MID(B2,8,1)=" ",RIGHT(B2,7),RIGHT(B2,8))
)

ou em uma linha:

=DATEVALUE(CONCATENATE(2000+MID(B2,8,2),"-",IF(MID(B2,4,3)="Jan",1,IF(MID(B2,4,3)="Feb",2,IF(MID(B2,4,3)="Mar",3,IF(MID(B2,4,3)="Apr",4,IF(MID(B2,4,3)="May",5,IF(MID(B2,4,3)="Jun",6,IF(MID(B2,4,3)="Jul",7,IF(MID(B2,4,3)="Aug",8,IF(MID(B2,4,3)="Sep",9,IF(MID(B2,4,3)="Oct",10,IF(MID(B2,4,3)="Nov",11,IF(MID(B2,4,3)="Dec",12,"")))))))))))),"-",MID(B2,1,2)))+TIMEVALUE(IF(MID(B2,8,1)=" ",RIGHT(B2,7),RIGHT(B2,8)))

e, em seguida, altere o tipo da célula que contém a fórmula para Data e escolha o formato desejado.

Em suma, um processo bastante complicado. Existe uma maneira mais automatizada?

    
por Johnny Baloney 24.11.2014 / 14:32

2 respostas

1

Você pode usar algum tipo de "tabela de consulta" para traduzir os nomes dos meses em datas (essa solução é baseada em um solução proposta para a operação oposta - traduzir números para nomes de mês )

Basta colocar os nomes dos meses um após o outro em uma coluna na sua planilha e definir um intervalo nomeado nessas células (por exemplo, Monthnames ). Agora, você pode determinar o número do mês usando =MATCH("Dec",Monthnames,0) , o que resulta em 12 :

Comessatabela,vocêpodesubstituirasdeclaraçõesIFporumaúnicachamadaMATCH:

=DATEVALUE(CONCATENATE(MID(A2,8,2),"/",MATCH(MID(A2,4,3),Monthnames,0),"/",MID(A2,1,2)))

ou em várias linhas:

=DATEVALUE( CONCATENATE( MID(A2,8,2), "/", MATCH( MID(A2,4,3), Monthnames, 0 ), "/", MID(A2,1,2) ) )

A fórmula acima cria um valor de data válido das suas sequências de exemplo:

    
por 24.11.2014 / 16:12
1

Use MONTH para extrair o valor do mês com valores fictícios dd, yy:

=DATEVALUE(CONCATENATE(MID(A2,8,2),"/",MONTH("1"&MID(A2,4,3)&"1"),"/",MID(A2,1,2)))
    
por 24.01.2015 / 01:19