Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
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

Variablen Numerischen String im String

Variablen Numerischen String im String
05.08.2021 10:23:59
Stefan
Hallo ihr lieben Forumsteilnehmer,
ich bin auf der Suche nach einer Formel (VBA wäre auch möglich) um folgendes Problem zu lösen.
In Spalte B stehen Einträge die vollkommen variabel sind, die bekomme ich so aus einem anderen Programm. Es handelt sich um Angaben zu Anbietern, Datumsangaben in englischer/amerikanischer Form und Lieferungen. Also z. B.
123-Bau.20.08.08.Paste.Rot
Adalbert.Gerüste.18.12.31.Klassik.Schienen
Mohren.Motoren.21.03.12.Schraubventile
BaustoffhandelBayerGmbH.17.01.01.Basis-Gehäuse.mit.Platine.und.Stecker
Ich möchte nun dieses amerikanische Datum herausfiltern und in Spalte E ausgeben - idealerweise im Datumsformat JJJJ-MM-TT.
Da es jedoch immer Variable Namen sind und auch die Punkte öfter und an verschiedenen Stellen vorkommen würde ich gerne nach einem String "ZweiZiffern.ZweiZiffern.ZweiZiffern" suchen, bekomme das aber nicht hin.
Vielleicht hat jemand von euch eine Idee dazu?`
Grüße
Stefan

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen Numerischen String im String
05.08.2021 10:38:12
Daniel
Hi

=WERT("20"&TEIL(B1;SUCHEN(".?.?.?.";B1)+1;8))
Damit bekommst du das Datum als Zahl, welches du dir dann über das Zahlenformat in der gewünschten Form anzeigen lassen kannst.
Btw "amerikanisch" ist meines Wissens nach die Form Monat/Tag/Jahr
Gruß Daniel
AW: diese gefällt mir sehr gut owT
05.08.2021 10:51:41
neopa
Gruß Werner
.. , - ...
AW: Variablen Numerischen String im String
05.08.2021 11:06:18
Stefan
Hallo Daniel,
ich danke dir gleich in doppelte Form - zum einen für diese extrem schnelle Antwort und die tolle Lösung !!
Btw. ob das Format amerikanisch ist war nur vermutet - in meinen Daten aber ganz sicher immer JJ.MM.TT
Gruß
Stefan
Anzeige
RegEx
05.08.2021 10:41:04
Fennek
Hallo,
in RegEx wäre das Pattern

RegEx.Pattern = "\d{2}\.\d{2}\.\d{2}"
Einfacher verständlich könnte
like "##.##.##"
sein.
mfg
AW: RegEx
05.08.2021 11:08:21
Stefan
Hallo Fennek,
danke für deine Antwort. Leider fehlt mir das Wissen wie ich deine Antwort umsetzen kann. Habe zwar schon von RegEx gehört aber mehr leider nicht.
Grüße
Stefan
UDF mit RegEx
05.08.2021 10:41:27
ChrisL
Hi Stefan
z.B.
VBA Standardmodul:

Function GetDate(S As String) As Date
Dim RE As Object, MC As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "\d{2}.\d{2}.\d{2}"
If .test(S) = True Then
Set MC = .Execute(S)
GetDate = DateSerial(Mid(MC(0), 1, 2), Mid(MC(0), 4, 2), Mid(MC(0), 7, 2))
End If
End With
End Function
Anschliessend als normale Formel verwendet:

=GetDate(A1)
Wie du die Zelle abschliessend formatierst ist dir überlassen.
cu
Chris
Anzeige
AW: UDF mit RegEx
05.08.2021 11:12:43
Stefan
Hallo Chris,
danke für deine schnelle und tolle Lösung, sieht hochprofessionell aus !!
Dazu aber zwei Anmerkungen:
- In meinem Arbeitsumfeld konnte ich die Lösung nicht nutzen da ein Virenwächter angesprungen ist den ich wegen fehlender Berechtigungen auch nicht ändern kann. Auf einem Test-System funktioniert die Funktion aber super !!
- Habe in meinem Beispiel vergessen zu erwähnen dass es auch vorkommen kann das kein Datum existiert, da gibt deine Funktion dann 1.1.1900 aus - das wäre sicherlich eine Kleinigkeit zu korrigieren, aber da die erste Antwort von Daniel schon hervorragend funktioniert ist die Anpassung nicht zwingend nötig (höchstens interessant um zu lernen)
Gruß
Stefan
Anzeige
AW: eine Möglichkeit wäre z.B. ...
05.08.2021 10:44:52
neopa
Hallo Stefan,
... eine Formellösung, die in Deiner XL-Version einfacher gehen könnte als nachfolgend aufgezeigt (hab nur XL2016):
 BC
2123-Bau.20.08.08.Paste.Rot2020-08-08
3Adalbert.Gerüste.18.12.31.Klassik.Schienen2018-12-31
4Mohren.Motoren.21.03.12.Schraubventile2021-03-12
5BaustoffhandelBayerGmbH.17.01.01.Basis-Gehäuse.mit.Platine.und.Stecker2017-01-01
6  

ZelleFormatWert
C2JJJJ-MM-TT08.08.2020

NameBezug
_DZ=AGGREGAT(14;6;--TEIL(WECHSELN(Tabelle1!$B2;".";"");ZEILE(Tabelle1!A$1:INDEX(Tabelle1!$B$1:$B$999;LÄNGE(Tabelle1!$B2)));6);1)

ZelleFormel
C2=WENNFEHLER(--(RECHTS(_DZ;2)&"."&TEIL(_DZ;3;2)&"."&LINKS(_DZ;2));"")
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
AW: eine Möglichkeit wäre z.B. ...
05.08.2021 11:14:15
Stefan
Hallo Werner,
ich kann mit der Angabe Name: _DZ leider nichts anfangen und konnte deswegen deine Lösung nicht testen.
Gruß
Stefan
AW: hierzu ...
05.08.2021 11:43:17
neopa
Hallo Stefan,
... nur zur Erläuterung, da Du ja eine einfachere Lösung bereits hast.
In meiner Lösung ist: _DZ eine benannte Formel, die im Namensmanager zu definieren ist. Mehr dazu sieh mal hier: https://www.online-excel.de/excel/singsel.php?f=60 In Deiner XL-Version kann man gleiches auch direkt über die Zellformel definieren.
Gruß Werner
.. , - ...
AW: Variablen Numerischen String im String
05.08.2021 10:47:41
Beverly
Hi Stefan,
eine Möglichkeit:

Sub ExtraktDatum()
Dim varDaten
Dim lngZeile As Long
Dim intZaehler As Integer
For lngZeile = 1 To Columns(2).Find(What:="*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
varDaten = Split(Cells(lngZeile, 2), ".")
For intZaehler = 0 To UBound(varDaten)
If IsNumeric(varDaten(intZaehler)) Then
If IsNumeric(varDaten(intZaehler + 1)) And IsNumeric(varDaten(intZaehler + 2)) Then
Cells(lngZeile, 5) = DateSerial(varDaten(intZaehler), varDaten(intZaehler + 1), _
varDaten(intZaehler + 2))
Exit For
End If
End If
Next intZaehler
Next lngZeile
End Sub

GrußformelBeverly's Excel - Inn
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige