In che modo Excel gestisce la composizione delle funzioni?


21

Stavo cercando di utilizzare le funzioni per ottenere il giorno di oggi come numero in Excel. Ad esempio, quando ho scritto questa domanda avrei dovuto ottenere $ 18 $.

Ho provato ad usare:

  1. la funzione TODAY()che restituisce la data odierna in un formato data.
  2. Day(<date>)che restituisce il numero del giorno di <date>. Cioè DAY(19/05/1984)dovrebbe tornare 19.

Pertanto, la formula

=DAY(TODAY())

dovrebbe dare il risultato che volevo.

Tuttavia, questo ritorno 18/01/1900 (quando si utilizza la funzione oggi)

Se io uso

=TODAY()

nella cella A1 e quindi

=DAY(A1)

in un'altra cella, ottengo il risultato giusto.

Perché DAY (TODAY ()) non dà il risultato atteso?

Dal mio background di matematico e programmatore amatoriale (in Maple, Java e alcuni Python), la mia composizione di funzioni sembra a posto.

Più in generale, in che modo Excel gestisce la composizione delle formule?


11
La risposta corretta è "male".
Carl Witthoft, il

Supporto di Office per le funzioni di Excel .. dice anche: =DAY(TODAY())... Restituisce il giorno corrente del mese (1 - 31) ..
txtechhelp

Risposte:


40

La tua formula è corretta; è il modo in cui Excel formatta le celle che creano confusione. Ad esempio, se si imposta manualmente un valore di cella su 18e quindi si modifica il formato in una data, verrà visualizzato come January 18, 1900.

Se cambi il formato della cella con la tua formula in "Generale", dovrebbe visualizzare il risultato che ti aspetti.


3
Potrebbe aiutare a spiegare perché la formattazione sta facendo questo. Excel memorizza i timestamp come "giorni da 00:00:00 0 gennaio 1900", con ore, minuti e secondi come decimali di un giorno (mezzogiorno del 1 gennaio 1900 è "1,5").
Carl Kevinson,

E Excel imposterà automaticamente la formattazione di data o ora non appena viene utilizzato qualsiasi tipo di valore di data / ora. Può essere un'altra cella formattata in questo modo o funzioni simili TODAY(). Davvero fastidioso quando li usi solo nelle funzioni di decomposizione e devi ripristinare la formattazione.
maniaco del cricchetto,

1
Tangenzialmente rilevante: sciencemag.org/news/2016/08/… [Un documento su cinque della genetica contiene errori grazie a Microsoft Excel]
Darren Ringer

@DarrenRinger L'ho sempre letto come "incolpare i loro strumenti" - il punto chiave del documento è e rimanere vigili . Simile è successo a me (anche se non sulla genetica) e come tutti gli altri penso che "Excel abbia cambiato quella figura in ....", mentre dovrei dire a me stesso "accidenti, non ho tenuto conto del fatto che quella cifra sarebbe cambiata a ..... "
Darren Bartrup-Cook

9

Penso che potresti essere confuso nel pensare che Excel manipoli i valori di 'data': non lo fa.

Come utilizzare date e orari in Excel

In Excel, i numeri vengono utilizzati per rappresentare le date (il numero possibilmente frazionario di giorni dallo 0-gen-1900), ma vengono memorizzati e manipolati da Excel come numeri. OGGI () è una funzione con valori numerici e DAY () è una funzione da un argomento numerico a un risultato numerico.

Nel tuo caso, DAY (OGGI ()) ha restituito correttamente 18 (un numero) che immagino tu abbia assegnato a una cella formattata per mostrare una data in forma abbreviata, in modo che 18 venga visualizzato come 18/01/1900. Perché per Excel, quando 18 viene interpretato come una data, questo è ciò che significa.

Se formatti quella cella in un formato numerico, vedrai la risposta visualizzata nel modo previsto, ad esempio 18.


2

Non c'è niente di sbagliato nella tua Formula. Quello che vorrei suggerirti, se la Formula non produce il risultato atteso, allora produce sia Error o il risultato Wrong. Dal momento che non hai menzionato ciò che la Formula ha cucinato!

Nel frattempo vorrei mostrarti quali sono le possibilità per ottenere il valore GIORNO in Numero in Excel.

Controlla la schermata qui sotto.

Ottieni il giorno in numero

NB:

La data è nella cella E166 . La 2a colonna F ha risultati e la 3a colonna G mostra la formula per cui ho usato.

È inoltre possibile utilizzare la funzione TESTO per ottenere il valore del giorno come dati di testo.

Il valore è ROSSO Il colore ha il formato cella personalizzato DD, è possibile applicare sulla cella (S) per mostrare solo i valori del giorno della data (S).

Nota, ti ho suggerito tutte le possibilità poiché hai detto che in fondo non sei un utente Excel.

Spero che questo ti aiuti, non dimenticare di pubblicare l'ERRORE che la tua Formula ha dato.


1

La tua formula è composta correttamente. Il risultato imprevisto è dovuto al modo in cui Excel archivia diversi tipi di dati.

Esistono due sistemi simili che Excel utilizza per la memorizzazione delle date, in base a un'impostazione a livello di cartella di lavoro.

Il sistema di datazione del 1900

Nel sistema di data 1900, il primo giorno supportato è il 1 ° gennaio 1900. Quando si immette una data, la data viene convertita in un numero seriale che rappresenta il numero di giorni trascorsi dal 1 ° gennaio 1900. Ad esempio, se si inserire il 5 luglio 1998, Excel converte la data nel numero seriale 35981.

Per impostazione predefinita, Microsoft Excel per Windows utilizza il sistema di data 1900. Il sistema di data 1900 consente una migliore compatibilità tra Excel e altri programmi di fogli di calcolo, come Lotus 1-2-3, progettati per essere eseguiti in MS-DOS o Microsoft Windows.

Il sistema di data del 1904

Nel sistema di data del 1904, il primo giorno supportato è il 1 ° gennaio 1904. Quando si immette una data, la data viene convertita in un numero seriale che rappresenta il numero di giorni trascorsi dal 1 ° gennaio 1904. Ad esempio, se si inserire il 5 luglio 1998, Excel converte la data nel numero seriale 34519.

Per impostazione predefinita, Microsoft Excel per Macintosh utilizza il sistema di data 1904. A causa della progettazione dei primi computer Macintosh, le date precedenti al 1 gennaio 1904 non erano supportate. Questo progetto aveva lo scopo di prevenire i problemi legati al fatto che il 1900 non era un anno bisestile. Se si passa al sistema di data 1900, Excel per Macintosh supporta le date già dal 1 ° gennaio 1900.

Questi estratti sono stati presi da: https://support.microsoft.com/en-us/help/214330/differences-b Between-the-1900-and-the-1904-date- system-in - excel

Il numero di serie è un semplice conteggio progressivo del numero di date dal 1 ° gennaio 1900, inclusa la data fittizia 29 febbraio 1900. La funzione GIORNO, tuttavia, può essere considerata come una funzione di conversione del tipo di dati. Prende un numero seriale della data come input e restituisce un numero intero come output. Nel tuo esempio, se pensiamo che 18 rappresenti una data seriale e contiamo 18 giorni in avanti dal 1 ° gennaio 1900, finiremo con il 18 gennaio 1900.

La semplice soluzione sul front-end è quella di cambiare il formato della tua cella in qualcos'altro come Numero o Generale . Questo dirà ad Excel di mostrartelo come un numero intero, piuttosto che provare a interpretarlo come una data seriale. Sul retro, è tutto a posto. Il risultato intero può essere utilizzato in qualsiasi altra formula e si comporterà correttamente.

Ad esempio, supponiamo che volessimo creare una formula condizionale che ci dicesse se il 15 è passato o meno nel mese corrente. Possiamo farlo usando:

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

Sarebbe molto più difficile ottenere lo stesso risultato usando una data seriale, quindi la funzione GIORNO che restituisce un numero intero risulta più utile nel contesto dei casi d'uso comuni di Excel.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.