Wie kann ich den angezeigten Wert einer Zelle in MS Excel abrufen (für Text, der in Datumsangaben konvertiert wurde)?
Ursprung der Excel-Datei
Ich habe eine Excel-Datei, die ursprünglich eine CSV-Datei war. Derzeit habe ich keinen Zugriff auf die ursprüngliche CSV-Datei. Als die CSV-Datei ursprünglich in Excel geöffnet wurde, wurden viele Zellen in der Date
Spalte automatisch konvertiert.
Beispielwerte
Hier ist ein Beispiel für einige Elemente aus der Date
Spalte (der Abstand steht für links und rechts ausgerichtete Zellen, hauptsächlich um zu zeigen, dass das zweite Datum nicht konvertiert wurde):
Ausstellung 1:
3/1/71
12/01/1882
Fall 1988
1993
Und wenn ich eine dieser Zellen auswähle und mit der rechten Maustaste klicke und die Formatierung auswähle, erhalte ich verschiedene Dinge:
m/d/yy
General
General
General
Mögliche Logik
Es sieht also so aus, als hätte Excel das Datum des 01.12.1882 nicht konvertiert - vielleicht weil es "zu alt" ist oder vielleicht aus einem anderen Grund.
Wenn ich die gesamte Spalte auswähle und in die Formatierung "Allgemein" ändere, erhalte ich Folgendes (Text linksbündig, Zahlen rechtsbündig):
25993
12/01/1882
Fall 1988
1993
Was ich möchte
Ich hätte gerne eine Spalte, in der das Format auf "Allgemein" oder "Text" eingestellt ist, und die Daten, die ab Exponat 1 oben angezeigt wurden .
Ich habe diese Frage zur Verwendung einer DataFormatter-Klasse (sieht aus wie Java?) Und einige ähnliche Fragen gesehen, die Makros und VB-Skripte verwenden - aber wenn möglich, möchte ich wirklich eine Möglichkeit, eine Excel-Funktion zu verwenden, um dies zu tun.
Was ich versucht habe
Ich habe versucht, diese Dinge zu verwenden, die nicht funktioniert haben:
CONCATENATE
- um das Datumsfeld abzurufen und mit einem Leerzeichen zu versehen
INDIRECT(ADDRESS(ROW(),5))
- den Wert indirekt abzurufen
VALUE()
- den "Wert" der Zelle abzurufen - entgegengesetzt zu dem, was ich möchte
TEXT()
- kann das Format explizit angeben, kann es aber immer noch nicht zum Laufen bringen
CELL()
- kann verwendet werden Zellinformationen wie "Inhalt" zu erhalten - kein Glück damit, aber ich habe gesehen, dass ich es auch verwenden könnte, um zu erhalten, format
was mir sagen würde, ob die Zelle als Nummer oder als "allgemein" angezeigt wird, was dann möglicherweise mit einem verwendet werden könnte IF
Funktion irgendwie, um eine Zahl, die als Datum angezeigt wird, in ein tatsächliches Datum umzuwandeln ... möglicherweise?
Kopier-Einfügemethode
Eine Methode, die ich gesehen habe und die zu funktionieren scheint, besteht darin, die Werte auszuwählen, sie zu kopieren und in den Editor einzufügen und sie dann zu kopieren und wieder in Excel einzufügen (sie gibt effektiv den angezeigten Wert an - was ich will)
Das einzige Problem ist, dass ich eine Funktion haben möchte, um dies zu tun, da das Excel-Blatt einige hunderttausend Zeilen enthält.
Antworten:
Wenn Sie uns alle möglichen Formate gezeigt haben, sollte dies funktionieren:
Wenn Sie andere Datumsformate als m / t / jj haben, fügen Sie Tests für diese hinzu.
quelle
Eine allgemeine Antwort:
Anstatt zu versuchen, sich mit den Ergebnissen der CELL-Funktion ("format" ...) zu beschäftigen, ist es möglicherweise einfacher, eine benutzerdefinierte Funktion zu verwenden, um die NumberFormat-Eigenschaft der Zelle direkt zurückzugeben.
In diesem Fall würde der Ausdruck "= TEXT (A1, NumberFormat (A1))" den angezeigten Wert ziemlich direkt anzeigen.
Um dies zu aktivieren, benötigen Sie Folgendes in einem Modul des Arbeitsblatts:
quelle
Die gleiche Antwort, aber mit einer anderen Funktion (die bei mir funktioniert hat):
Verwenden Sie einfach = DisplayText (A1). Wenn Sie das Zellenformat ändern, gibt diese Funktion den angezeigten Text zurück
quelle
Das funktioniert bei mir. Es ist dasselbe wie der obige Beitrag, enthält jedoch eine Fehlerprüfung:
Schritt 1: Kopieren Sie die folgende öffentliche Funktion und fügen Sie sie in ein VBA-Modul ein:
Schritt 2: Probieren Sie es in Ihrer Tabelle aus. Geben Sie in eine beliebige Zelle die Formel ein, zum Beispiel: = CELLTEXT (A1). Dies gibt dann alles aus, was A1 angezeigt hat.
quelle