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 $ 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> . Isso é DAY(19/05/1984) deve retornar 19.

Portanto, a fórmula

=DAY(TODAY())

deve dar o resultado que eu queria.

No entanto, este 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, obtenho o resultado correto.

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

De meu histórico de matemáticos e programadores amadores (em Maple, Java e alguns Python), minha composição de funções parece boa.

Mais geralmente, como o Excel lida com a composição de fórmulas?

    
por Taladris 18.01.2018 / 07:52

4 respostas

40

Sua fórmula está correta; É o modo como o Excel formata células que são confusas. Por exemplo, se você definir manualmente um valor de célula como 18 e depois alterar o formato para uma data, ele exibirá isso como January 18, 1900 .

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

    
por 18.01.2018 / 08:15
9

Acho que você pode estar confuso ao pensar que o Excel manipula valores de 'data': não.

Como usar datas e horas em Excel

No Excel, os números são usados para representar datas (o número de dias possivelmente fracionário 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), o que eu imagino que você tenha atribuído 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 em um formato numérico, verá a resposta exibida da maneira esperada, por exemplo, 18.

    
por 18.01.2018 / 19:01
2

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

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

Verifique a captura de tela abaixo.

NB:

A data está em Célula E166 . 2ª coluna F tem resultados e a 3ª coluna G mostra a fórmula que eu usei.

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

O valor é RED Color tem o formato de célula personalizado DD, você pode aplicar na célula (S) para mostrar apenas os valores de dia da data (S).

Observação, Eu sugeri a você todas as possibilidades desde que 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.

    
por 18.01.2018 / 08:51
1

Sua fórmula é composta corretamente. O resultado inesperado é devido a como 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 de nível de pasta de trabalho.

O sistema de datas de 1900

In the 1900 date system, the first day that is supported is January 1, 1900. When you enter a date, the date is converted into a serial number that represents the number of elapsed days since January 1, 1900. For example, if you enter July 5, 1998, Excel converts the date to the serial number 35981.

By default, Microsoft Excel for Windows uses the 1900 date system. The 1900 date system enables better compatibility between Excel and other spreadsheet programs, such as Lotus 1-2-3, that are designed to run under MS-DOS or Microsoft Windows.

O sistema de datas de 1904

In the 1904 date system, the first day that is supported is January 1, 1904. When you enter a date, the date is converted into a serial number that represents the number of elapsed days since January 1, 1904. For example, if you enter July 5, 1998, Excel converts the date to the serial number 34519.

By default, Microsoft Excel for the Macintosh uses the 1904 date system. Because of the design of early Macintosh computers, dates before January 1, 1904 were not supported. This design was intended to prevent problems related to the fact that 1900 was not a leap year. If you switch to the 1900 date system, Excel for the Macintosh does support dates as early as January 1, 1900.

Esses trechos foram extraídos de: link

O número de série é uma simples contagem 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 considerada como uma função de conversão de tipo de dados. Ele recebe um número de série de data como uma entrada e retorna um inteiro como uma saída. No seu exemplo, se pensarmos em 18 como representando uma série de data e contarmos em 18 dias a partir de 1º de janeiro de 1900, terminaremos em 18 de janeiro de 1900.

A correção simples no front-end é alterar o formato de sua célula para algo como Número ou Geral . Isso dirá ao Excel para exibi-lo como um número inteiro, em vez de tentar interpretá-lo como um serial de data. No final, tudo é bom para ir. O resultado inteiro pode ser usado em qualquer outra fórmula e se comportará corretamente.

Como exemplo, vamos dizer que queríamos criar uma fórmula condicional que nos informasse se o dia 15 passou ou não no mês atual. Nós podemos fazer isso usando:

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

Seria muito mais difícil realizar o mesmo resultado usando um serial de data, portanto, a função DAY que retorna um inteiro acaba sendo mais útil dentro do contexto dos casos de uso comuns do Excel.

    
por 19.01.2018 / 18:38