Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
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


Hallo zusammen.
Gibt es über VBA eine Möglichkeit, die Hintergrundfarbe einer Zelle in eine Zahl umzuwandeln und das schneller als mit for- Schleifen?
Habe einen Bereich ("J16:AG39"), wo ich per Zellaktivierung mit der Maus Zellen oder auch Zellbereiche mit einer Hintergrundfarbe verseh...

Guten Tag
Mit nachfolgendem Code wandle ich einen Textstring in ein Datum um. Komisch ist, dass ich die Schleife zweimal hintereinander laufen lassen muss. Nach dem ersten Mal wird das Datum mit "d/m/yy" und erst das zweite Mal im gewünschten Format "dd.mm.yy" angezeigt.
Was muss ich än...

Hallo Excel-Freunde
ich möchte gern per Formel folgendes lösen:
in zelle a3 steht
1 haley, bill rock around the clock 1956
jetzt soll in b3 die "1" stehen --- löse ich per Formel mit =LINKS(A3;SUCHEN(" ";A3)-1)
in e3 soll "1956" stehen --- löse ich mit Array-Formel {=...

Hallo ihr lieben,
ich schreib jetzt schon den ganzen Tag an folgender Routine:
Private Sub CommandButton1_Click() Dim z As Integer z = Range("I101").End(xlUp).Row + 1 TextBox1 = Format(CDate(TextBox1.Value), "dd.mm.yyyy") Cells(z, 9) = TextBox1 'Datum des Tauchgangs Cells(z, 12) = Tex...

Hallo, ich versuche grade bei einem Schichtplan die Verschiedenen Zelleninhalte z.B. Zelle A3 Inhalt "U1",Zelle A4 Inhalt"1/3" usw. in Werte umzuwandeln und diese dann als Stunden ausrechennen zu lassen.
Also so soll z.B. aus dem Inhalt von Zelle A3, dort steht "U1" soll dann 8 Stunden ents...

Hallo,
ich habe einen Textstring mit Zahlen die ich rechstbündig anordnnen will.
Text= "Beisiel: " & Format (Zahl,"#,###")
Wie wird die Zahl im Formatbefehl z.B rechtsbündig bei max 6 Stellen ausgegeben?
Gruß
Helmut
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige