Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt

Forumthread: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt

VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
13.05.2025 18:24:36
Joschi Witchcraft
Hallo Forum.

Ich brauche wieder einmal einen Rat zur Lösung folgenden Problems:

In einer Liste mit mehreren Rufnummern (Adress-Liste) möchte ich die Rufnummer zwischen Vorwahl und lokaler Rufnummer trennen (030-00112233 oder 035208-003388).

In einem Tabellenblatt habe ich über 5.000 Einträge mit den aktuell gültigen Vorwahlen in Deutschland. Leider sind diese Vorwahlen zwischen 3 (z.B. Berlin: 030) und 6 Stellen lang.

Frage: wie kann ich die zu einer Rufnummer gehörige Vorwahl finden? Hinweis: die Liste mit den Vorwahlen ist aufsteigend sortiert.

Wer hat eine gute Idee?

Gruß Joschi
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
13.05.2025 18:58:33
UweD
Hallo

so?
Meine Annahme der Vorwahlen:
Arbeitsblatt mit dem Namen 'Tabelle2'
 AB
51202985Winterberg-Niedersfeld
51302991Marsberg-Bredelar
51402992Marsberg
51502993Marsberg-Canstein
51602994Marsberg-Westheim
517030Berlin
51803301Oranienburg
51903302Hennigsdorf
52003303Birkenwerder
52103304Velten
522033051Nassenheide
962035207Moritzburg
963035208Radeburg
964035209Mohorn
96503521Meissen
96603522Grossenhain Sachs
96703523Coswig b Dresden
968035240Tauscha b Großenhain
969035241Lommatzsch
970035242Nossen
971035243Weinböhla

Sieht dann so aus

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCD
1030001122233030001122233Berlin
2035208003388035208003388Radeburg

ZelleFormel
B1=FILTER(FILTER(Tabelle2!A:A;ISTZAHL(FINDEN(Tabelle2!A:A;Tabelle1!A1)));FILTER(Tabelle2!A:A;ISTZAHL(FINDEN(Tabelle2!A:A;Tabelle1!A1)))>0)
C1=TEXTNACH(A1;B1)
D1=SVERWEIS(B1;Tabelle2!A:B;2;0)

LG UweD
Anzeige
AW: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
13.05.2025 19:38:34
Joschi Witchcraft
Hallo Uwe D.

Deine Vermutung stimmt: meine Tabelle sieht genaus so aus. Auch das Ergebnis stimmt. Doch in hatte auf eine VBA-Lösung gehofft, nachdem auch im "Betreff" dieses Wort benutzt wurde.

Die Formel verstehe ich nicht, auch wenn ich sie nur kopieren und einfügen müsste.

Gruß Joschi
Anzeige
AW: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
14.05.2025 11:36:05
UweD
Hallo nochmal


Dann so

Sub TelefonnummerAuftrennen()

Dim TBD As Worksheet, TBV As Worksheet
Dim LR As Long, LRV As Long, i As Long, j As Long
Dim TelNr As String, Vw As String, Nr As String
Dim TMP As Boolean

Set TBD = ThisWorkbook.Sheets("Daten") ' Datenblatt
Set TBV = ThisWorkbook.Sheets("Vorwahlen") ' Blatt mit Vorwahlen

LR = TBD.Cells(TBD.Rows.Count, "A").End(xlUp).Row
LRV = TBV.Cells(TBV.Rows.Count, "A").End(xlUp).Row

'Vorwahltabelle ohne Überschriften
'Sortiere absteigend nach Länge (damit z.B. 0301 vor 030 geprüft wird)
TBV.Range("A1:B" & LRV).Sort Key1:=TBV.Range("A1"), Order1:=xlDescending, Header:=xlNo

For i = 2 To LR 'Überschrift vorhanden
TelNr = Trim(TBD.Cells(i, 1).Value)
TMP = False

For j = 1 To LRV
Vw = Trim(TBV.Cells(j, 1).Value)
If TelNr Like Vw & "*" Then
Nr = Mid(TelNr, Len(Vw) + 1)
TBD.Cells(i, 2).Value = Vw
TBD.Cells(i, 3).Value = Nr
TBD.Cells(i, 4).Value = TBV.Cells(j, 2).Value 'Ort
TMP = True
Exit For
End If
Next j

If Not TMP Then
TBD.Cells(i, 2).Value = "Nicht gefunden"
TBD.Cells(i, 3).Value = TelNr
End If
Next i
End Sub



LG UweD
Anzeige
AW: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
13.05.2025 19:26:26
BoskoBiati
Hi,

vielleicht so:

Userbild

Gruß

Edgar
AW: Mit VBA ...
13.05.2025 23:11:54
Kuwer
Hallo Joschi,

... z.B. so:

Sub aaa()

Dim i As Long
Dim rngNr As Range
Dim strNr As String, strTemp As String
'Schleife über Telefonnummern in Spalte B
For Each rngNr In Tabelle2.Columns(2).Cells
If IsNumeric(rngNr.Text) Then
strNr = rngNr.Text
For i = 7 To 2 Step -1
'Schleife von hinten mit jeweils einer Ziffer weniger
strTemp = Left(strNr, i)
'Vergleich mit Vorwahlenliste
If IsNumeric(Application.Match(strTemp, Tabelle1.Columns(1), 0)) Then
rngNr.Value = strTemp & "-" & Mid(strNr, i + 1)
Exit For
End If
Next i
End If
Next rngNr
End Sub

Gruß, Uwe
Anzeige
AW: Du möchtest es ja...
14.05.2025 10:48:08
Joschi Witchcraft
Hallo zusammen.

Ich werde mich mit den bisherigen Antworten nochmals beschäftigen, und hoffe, eine passende Lösung zu finden.

Gruß Joschi
AW: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
13.05.2025 19:29:18
BoskoBiati
Hi,

geht sogar noch einfacher:

=SVERWEIS(0&AGGREGAT(14;6;A:.A/(LINKS(D1;LÄNGE(A:.A))=A:.A);1);A:.B;2;0)


Gruß

Edgar
AW: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
13.05.2025 19:41:03
Joschi Witchcraft
Hallo Edgar.

Ich Dir vielen Dank. Aber auch das ist keine Lösung für VBA, sondern lediglich eine kürzere Formel als die von UweD.

Gruß Joschi
Anzeige
AW: VBA Wert in Tabelle finden, Länge zum Vergleich unbekannt
13.05.2025 19:51:45
BoskoBiati
Hi,

und warum muß es VBA sein?

Gruß

Edgar
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18