2015-08-05 12 views
5

Tabelle mit Beispieldaten ist verknüpft here.Wie funktioniert der logische Test in einer Excel-if-Anweisung, um Daten in verschiedenen Formaten auszuwerten?

Angenommen, Sie haben 3 Daten "4/1/2015", "6/30/2015" und "5/1/2016" auf das Datenzellenformat in Excel festgelegt.

Sie können die Daten direkt mit logischen Operatoren vergleichen (<,>, usw.). Wenn sich "4/1/2015" in Zelle A1 und "6/30/2015" in Zelle A2 befand, wird diese Formel =IF(A1>A2,"True","False") zu "Falsch" ausgewertet.

Sie können jedoch ein Datum nicht mit einem Zeichenfolgenliteral (d. H. "31.03.2015") vergleichen. Wenn sich "4/1/2015" in Zelle A1 befindet, wird diese Formel =IF(AND(A1>="4/01/2015",A1<="6/30/2015"),"True","False") immer als "False" ausgewertet.

Mit dem oben genannten, warum ist es, dass durch Anfügen einer arithmetischen Operation an ein Zeichenfolgenliteral; Excel ermöglicht den Vergleich zwischen Daten in verschiedenen Formaten gespeichert? Wenn sich beispielsweise "4/1/2015" in Zelle A1 befindet, wird diese Formel =IF(AND(A1>="4/01/2015"+0,A1<="6/30/2015"+0),"True","False") als "Wahr" ausgewertet.

Antwort

8

Datumsangaben werden als ein Doppel gespeichert - die Anzahl der Tage ab dem 31. Dezember 1899 zuzüglich eines Bruchteils, der den prozentualen Anteil der seit Mitternacht verstrichenen Zeit angibt. Im Moment tippe ich dies bei 42221.50049, das sind 42.221 Tage seit 1899 und etwas nach Mittag.

Sie sehen ein Datumsformat nur, weil Sie ein Datumsformat auf diese Zelle angewendet haben. Es ist immer noch eine Nummer darunter. Aber Daten sind ein bisschen speziell. Das Datum wird auch in der Excel-Symbolleiste angezeigt, nicht als Zahl, sondern als Datum. Andere formatierte Nummern zeigen diesen Weg nicht an. Excel versucht, eine feine Grenze zwischen dem Speichern von Daten als Doppel und dem Anzeigen des Benutzers, was sie sehen möchten.

Excel verfügt über eine integrierte Typenumwandlung. TC lässt Sie Dinge tun, ohne über Datentypen extrem streng zu sein. Wenn Excel herausfinden kann, was Sie tun sollen, wird es das tun. Wenn Sie zwei Zeichenfolgen hinzufügen möchten, "1" + "1" Excel wird jede dieser Zeichenfolgen zu einer Zahl zwingen, so dass es die Operation ausführen und Ihnen 2 geben kann. Wenn Sie "1" + "a" fragen, erhalten Sie einen Fehler #VALUE, weil Excel nicht herausfinden kann, wie man "a" in etwas, das ein gültiger Operand ist, zwingt.

Vergleiche lösen keinen Zwang aus. So wird ="1"=1 False zurückgeben - eine Zeichenfolge ist nicht gleich einer Zahl und der Vergleich löst keinen Excel aus, um beide Werte auf einen anderen Typ zu zwingen.

In Ihrem Fall A1>="04/01/2015" scheint wie eine große Chance für Excel zu zwingen, was wie ein Datum zu einem tatsächlichen Datum aussieht. Aber das tut es nicht. So funktioniert es. Aber Null zum Datum hinzuzufügen (das sich erinnern Sie, ist nur ein Doppeltes), erzwingt es in ein Datum und Sie verlassen sich, A1 mit etwas zu vergleichen, das zu einem Datum gezwungen worden ist.

String-Literale von Daten scheinen in vielen Umgebungen wie SQL Server zu funktionieren. Aber in Excel sind sie normalerweise nicht. Es ist am besten, IMO, die Funktion DATE() zu verwenden, wie in A1>=DATE(2015,4,1).

Verwandte Themen