Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

UDF die Texte in Zahlen umwandelt

UDF die Texte in Zahlen umwandelt
24.02.2019 08:35:05
Christian
Hallo,
ich hoffe das macht nicht allzuviel Mühe,
ich habe eine Reihe von Texten die eigentlich Daten sein sollen, aber keine sind, weil Excel keine Daten vor dem 1.1.1900 als solche anzeigen kann.
das neueste Datum ist der 19.12.1899, das älteste der 16.09.1098
Ich suche nun eine UDF, die aus dem 31.12.1899 die Zahl 0 macht, aus dem 30.12.1899 die Zahl -1 aus dem 29.12.1899 die Zahl -2 aus dem 28.12.1899 die Zahl -3 usw. usw.
Ist das machbar?
Danke Christian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UDF die Texte in Zahlen umwandelt
24.02.2019 08:44:46
Hajo_Zi
Hallo christian,
ich hätte 30.12.1899 als -2 angesegen.
Vielleicht ein Ansatz?
http://www.excelformeln.de/formeln.html?welcher=1

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: UDF die Texte in Zahlen umwandelt
24.02.2019 08:55:31
Christian
Hallo Hajo, mein Ziel ist im Endeffekt Datedif nutzen zu können zwischen einem Datum vor 1900 und einem ab 1900, indem ich zu beiden Daten 4000 Jahre addiere. Wenn wie du vorschlägst der 31.12.1899 -1 ist und der 1.1.1900 +1 würde die Datedif Formel 2 Tage ausgeben, obwohl nur 1 Tag dazwischen liegt.
Abgesehen davon eine Formel wäre mir lieber als so viele Hilfsformeln.
Gruß
Christian
Anzeige
Problem gelöst
24.02.2019 09:25:15
Christian
Hab was hier im Forum gefunden
Function Text2Date(Datum$): Text2Date = CDate(Datum): End Function
was allerdings aus dem 31.12.1899 die Zahl 1 gemacht hat, statt 0
Function Text2Date(Datum$): Text2Date = CDate(Datum)-1 : End Function
brachte dann das gewünschte Ergebnis
Ich hätte andere UDFs aus dem Archiv empfohlen, …
24.02.2019 16:00:26
Luc:-?
…Christian,
nämlich TextToDate und DateToText. Die basieren auf der VBA-Datumsrechnung und reichen vom 1.1.100 bis zum 31.12.9999.
Da Xl das Jahr 1900 als Schaltjahr wertet, was es aber nicht war, sind erst Xl-Daten ab 1.3.1900 brauchbar. VBA hat diesen Fehler nicht und wertet deshalb den 1.1.1900 als 2, nicht 1 wie Xl. Folglich hat der 31.12.1899 den Wert 1 und der 30.12.1899 den Wert 0. Ab 29.12.1899 sind die Werte dann negativ, beginnend mit -1. Das VBA-basierte Ergebnis von Text2Date ist demzufolge richtig, Hajos Ver­mutung dagg nicht.
Mit deiner Operation könntest du den Xl-Fehler auch in die Pseudo-Zukunft (+4000 Jahre!) verschleppen, während die von mir empfoh­lenen UDFs hier durchgängig richtig rechnen würden.
Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Ich hätte andere UDFs aus dem Archiv empfohlen, …
24.02.2019 18:46:11
Christian
Hallo Luc,
sorry bei dem was du damals Jenny geschrieben hattest verstehe ich nur noch Bahnhof.
Aber wenn es stimmt, dass Excel davon ausgeht, dass es einen 29.2.1900 gegeben hat, also bei _ Datedif in meinem Fall einen Tag zu viel ausgibt, warum dann nicht einfach eine Wennformel drumherum, a la (die formel ist jetzt aus der Hand geschrieben ungetestet)

=WENN(UND(C158);DATEDIF(C1+1461000;F1+1461000;"YD")-1;DATEDIF(C1+1461000;F1+1461000;"YD") .
Daten zwischen dem 1.1.1900 und dem 28.2.1900 kommen in meiner Tabelle nicht vor, daher sollten m.e. diese Wenn Bedingungen ausreichen.
Oder siehst du das anders?
Gruß
Christian
Anzeige
Ja! Wenn man zT mit VBA, …
24.02.2019 19:34:57
Luc:-?
…was bei deinen Datumsangaben ja notwendig wäre, Christian,
und zT mit Xl rechnet, kann nur mit Klimmzügen (+4000 Jahre!) einigermaßen Richtiges herauskommen. Das wäre ggf zu vernach­läs­si­gen, wenn nie ein Datum vom 1.1. bis vor dem 1.3. zustande kommt, aber wesentlich sinnvoller wäre es doch, sich hier ganz auf VBA zu verlassen, denn dann musst du auch keine 4000 Jahre addieren. Eine DifferenzBildung ist ebenfalls in VBA möglich.
Die unter dem DownLoadLink im verlinkten Beitrag erreichbaren UDFs können dabei als Anregung dienen oder aber bei einfacher Diffe­renz­Bildung in ZellFmln direkt verwendet wdn, zB:
=TextToDate("31.12.9999")-TextToDate("1.1.100") ⇒ 3 615 899 Tage (GesamtUmfang) oder …
=TextToDate("31.12.1899")-TextToDate("30.11.1899") ⇒ 31 Tage
Für Datumsangaben vor Einführung des Gregorianischen Kalenders müsste man aber wohl noch die übersprun­genen Tage abziehen, abgesehen mal von Ungereimtheiten bei Daten aus dem (europäischen) 1.Jahrtsd, die auch VBA garantiert nicht abfangen kann… ;-]
Luc :-?
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige