Como o Excel lida com a composição de funções?


21

Eu estava tentando usar funções para obter o dia de hoje como um número no Excel. Por exemplo, quando escrevi esta pergunta, deveria ter obtido US $ 18 $.

Eu tentei usar:

  1. a função TODAY()que retorna a data de hoje em um formato de data.
  2. Day(<date>)que retorna o número do dia de <date>. Ou seja, DAY(19/05/1984)deve retornar 19.

Portanto, a fórmula

=DAY(TODAY())

deve dar o resultado que eu queria.

No entanto, esse retorno 18/01/1900 (ao usar a função hoje)

Se eu usar

=TODAY()

na célula A1 e depois

=DAY(A1)

em outra célula, eu obtenho o resultado certo.

Por que DAY (HOJE ()) não fornece o resultado esperado?

Do meu histórico de programador matemático e amador (em Maple, Java e alguns Python), minha composição de funções parece boa.

De maneira mais geral, como o Excel lida com a composição de fórmulas?


11
A resposta correta é "mal".
Carl Witthoft 18/01/19

Suporte do Office para funções do Excel .. ele ainda diz: =DAY(TODAY())... Retorna o dia atual do mês (1 a 31) .. #
txtechhelp

Respostas:


40

Sua fórmula está correta; é a maneira como o Excel formata células que é confuso. Por exemplo, se você definir manualmente um valor de célula para 18e depois alterar o formato para uma data, ele será exibido como January 18, 1900.

Se você alterar o formato da célula com sua fórmula para "Geral", ele deverá exibir o resultado esperado.


3
Pode ajudar a explicar por que a formatação está fazendo isso. O Excel armazena os registros de data e hora como "dias desde 00:00:00 de 0 de janeiro de 1900", com horas, minutos e segundos como decimais de um dia (o meio-dia de 1º de janeiro de 1900 é "1,5").
precisa saber é o seguinte

O Excel será padronizado para a formatação de data ou hora, assim que qualquer tipo de valor de data / hora for usado. Isso pode ser outra célula que é formatada assim ou que funciona assim TODAY(). Realmente irritante quando você as usa apenas em funções de decomposição e precisa mudar a formatação novamente.
catraca aberração

11
Tangencialmente relevante: sciencemag.org/news/2016/08/… [Um em cada cinco artigos sobre genética contém erros graças ao Microsoft Excel]
Darren Ringer

@ DarrenRinger Eu sempre li isso como "culpar suas ferramentas" - o ponto principal do jornal ser e permanecer vigilante . Aconteceu o mesmo comigo (embora não em genética) e, como todo mundo, acho que "o Excel mudou esse número para ...", enquanto eu deveria estar me dizendo "caramba, não levei em conta que esse número mudaria to ..... "
Darren Bartrup-Cook

9

Eu acho que você pode estar confuso ao pensar que o Excel manipula os valores de 'data': isso não acontece.

Como usar datas e horas no Excel

No Excel, os números são usados ​​para representar datas (o número possivelmente fracionário de dias desde 0-Jan-1900), mas eles são armazenados e manipulados pelo Excel como números. TODAY () é uma função com valor numérico e DAY () é uma função de um argumento numérico para um resultado numérico.

No seu caso, DAY (TODAY ()) retornou corretamente 18 (um número) que imagino que você atribuiu a uma célula formatada para mostrar uma data em formato abreviado - para que 18 seja exibido como 18/01/1900. Porque para o Excel, quando 18 é interpretado como uma data, é isso que significa.

Se você formatar essa célula para um formato numérico, verá a resposta da maneira que esperava, ou seja, 18.


2

Nada está errado com a sua fórmula. O que eu gostaria de sugerir, se a fórmula não produz o resultado esperado, produz um erro ou um resultado errado. Desde que você não mencionou o que a fórmula tem cozinhar!

Enquanto isso, gostaria de mostrar quais são as possibilidades de obter o valor DAY em Number no Excel.

Confira a captura de tela abaixo.

Obter dia em número

NB:

A data está na célula E166 . A segunda coluna F tem resultados e a terceira coluna G mostra a fórmula para a qual eu usei.

Você também pode usar a função TEXTO para obter o valor do dia como dados de texto.

O valor é VERMELHO. A cor possui o formato DD da célula personalizada. Você pode aplicar na célula (S) para mostrar apenas os valores de dia da data (S).

Observe que sugeri todas as possibilidades, pois você mencionou que basicamente você não é um usuário do Excel.

Espero que isso ajude você, não se esqueça de postar o erro que sua fórmula deu.


1

Sua fórmula é composta corretamente. O resultado inesperado é devido à forma como os diferentes tipos de dados são armazenados pelo Excel.

Existem dois sistemas semelhantes que o Excel usa para armazenar datas, com base em uma configuração no nível da pasta de trabalho.

O sistema de data de 1900

No sistema de datas de 1900, o primeiro dia com suporte é 1 de janeiro de 1900. Quando você insere uma data, a data é convertida em um número de série que representa o número de dias decorridos desde 1 de janeiro de 1900. Por exemplo, se você digite 5 de julho de 1998, o Excel converte a data no número de série 35981.

Por padrão, o Microsoft Excel para Windows usa o sistema de datas 1900. O sistema de data de 1900 permite uma melhor compatibilidade entre o Excel e outros programas de planilhas, como o Lotus 1-2-3, projetados para serem executados no MS-DOS ou Microsoft Windows.

O sistema de datas de 1904

No sistema de datas de 1904, o primeiro dia com suporte é 1º de janeiro de 1904. Quando você insere uma data, a data é convertida em um número de série que representa o número de dias decorridos desde 1º de janeiro de 1904. Por exemplo, se você digite 5 de julho de 1998, o Excel converte a data no número de série 34519.

Por padrão, o Microsoft Excel para Macintosh usa o sistema de datas 1904. Devido ao design dos primeiros computadores Macintosh, as datas anteriores a 1º de janeiro de 1904 não eram suportadas. Esse projeto tinha como objetivo evitar problemas relacionados ao fato de 1900 não ter sido um ano bissexto. Se você alternar para o sistema de datas de 1900, o Excel para Macintosh suporta datas já em 1 de janeiro de 1900.

Esses trechos foram extraídos de: https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

O número de série é uma contagem simples do número de datas desde 1º de janeiro de 1900, incluindo a data fictícia de 29 de fevereiro de 1900. A função DAY, no entanto, também pode ser vista como uma função de conversão de tipo de dados. Ele pega um número de série da data como entrada e retorna um número inteiro como saída. No seu exemplo, se considerarmos 18 como representando uma série de datas e contar 18 dias a partir de 1º de janeiro de 1900, terminamos em 18 de janeiro de 1900.

A correção simples no front-end é alterar o formato da célula para algo como Number ou General . Isso instruirá o Excel a exibi-lo como um número inteiro, em vez de tentar interpretá-lo como uma série de datas. No back-end, está tudo bem para ir. O resultado inteiro pode ser usado em qualquer outra fórmula e se comportará corretamente.

Como exemplo, digamos que desejássemos criar uma fórmula condicional que nos dissesse se o dia 15 passou ou não no mês atual. Podemos fazer isso usando:

=IF(DAY(TODAY())>15,"The 15th has passed","It is not yet the 15th")

Seria muito mais difícil obter o mesmo resultado usando uma série de datas; portanto, a função DAY retornando um número inteiro acaba sendo mais útil no contexto dos casos de uso comuns do Excel.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.