Sub Namensliste_vervollständigen()
Dim Adr_schlüssel As String
Dim suchspalte As Long
Dim Beginn As Long
Dim cl As Range
Dim Vorname As String
suchspalte = Application.InputBox("Name", "In welcher Spalte steht der Name?", 3, Type:=1)
Beginn = Application.InputBox("Beginn", "In welcher Zeile soll mit der Suche und dem Austausch begonnen werden?", 3, Type:=1)
For Each cl In Columns(suchspalte).SpecialCells(xlCellTypeConstants)
If cl.Row < Beginn Or cl.Value <> "undefiniert" Then GoTo nächste
'Schlüssel herleiten
Adr_schlüssel = Cells(cl.Row, "B") & "_" & Cells(cl.Row, "D") & "_" & Cells(cl.Row, "E")
'nach Schlüssel eintragen
Select Case Adr_schlüssel
Case "Obernberger_Birkenweg_13": Vorname = "Hans-Peter"
Case "Sommerer_Rodensteinstr._25": Vorname = "Bernd"
Case "Heck_Südring_3": Vorname = "Karl-Heinz"
Case "Schulte-Münch_Bahnhofstr._38": Vorname = "Frauke"
Case "Thewes_Ringstr._7": Vorname = "Josephine"
Case "Schmid_Waldweg_11": Vorname = "Michael"
Case Else: Vorname = "undefiniert"
End Select
Cells(cl.Row, "C") = Vorname
nächste:
Next cl
End Sub
Sub Namensliste_vervollständigen()
Dim Adr_schlüssel As String
Dim suchspalte As Long
Dim Beginn As Long
Dim cl As Range
' Dim Name As String
Dim Vorname As String
' Dim Straße As String
' Dim Nummer As String
' Dim PLZ As String
' Dim Ort As String
Application.ReferenceStyle = xlR1C1 'Spaltenbuchstaben in Zahlen umwandeln
suchspalte = Application.InputBox("Vorname", "In welcher Spalte steht im Vornamen 'undefiniert'?", 3, Type:=1)
Name = Application.InputBox("Name", "In welcher Spalte steht der Name?", 2, Type:=1)
Straße = Application.InputBox("Straße", "In welcher Spalte steht die Straße?", 4, Type:=1)
Nummer = Application.InputBox("Nummer", "In welcher Spalte steht die Nummer?", 5, Type:=1)
PLZ = Application.InputBox("PLZ (übergehen = 99)", "In welcher Spalte steht die PLZ?", 6, Type:=1)
' Ort = Application.InputBox("Ort", "In welcher Spalte steht der Ort?", 7, Type:=1)
Application.ReferenceStyle = xlA1 'Spaltenzahlen wieder in Buchstaben zurück-umwandeln
Beginn = Application.InputBox("Beginn", "In welcher Zeile soll mit der Suche und dem Austausch begonnen werden?", 3, Type:=1)
For Each cl In Columns(suchspalte).SpecialCells(xlCellTypeConstants)
If cl.Row < Beginn Or cl.Value <> "undefiniert" Then GoTo nächste
'Schlüssel herleiten
Adr_schlüssel = Cells(cl.Row, Name) & "_" & Cells(cl.Row, Straße) & "_" & Cells(cl.Row, Nummer) & IIf(PLZ <> 99, "_" & Cells(cl.Row, PLZ), "")
'nach Schlüssel eintragen
Select Case Adr_schlüssel
Case "Obernberger_Birkenweg_13_82256", "Obernberger_Birkenweg_13": Vorname = "Hans-Peter"
Case "Sommerer_Rodensteinstr._25": Vorname = "Bernd"
Case "Heck_Südring_3": Vorname = "Karl-Heinz"
Case "Schulte-Münch_Bahnhofstr._38": Vorname = "Frauke"
Case "Thewes_Ringstr._7": Vorname = "Josephine"
Case "Schmid_Waldweg_11": Vorname = "Michael"
Case Else: Vorname = "undefiniert"
End Select
Cells(cl.Row, suchspalte) = Vorname 'in der Variable "Suchspalte" wird der Vorname eingetragen
nächste:
Next cl
End Sub
Sub Namensliste_vervollständigen_neu()
Dim Zelle As Range
Dim txt As String
Dim x
Dim CheckNeu As Boolean
Sheets("Tabelle2").Columns(2).SpecialCells(xlCellTypeConstants).Offset(0, -1).FormulaR1C1 = "=concat(RC2:RC7)"
With Sheets("Tabelle1").Range("B:G")
.Cells.Replace "undefiniert", True, xlWhole
If WorksheetFunction.CountIf(.Cells, True) Then
For Each Zelle In .Cells.SpecialCells(xlCellTypeConstants, 4)
txt = WorksheetFunction.Concat(Intersect(.Cells, Zelle.EntireRow))
txt = Replace(txt, "TRUE", "*")
x = Application.Match(txt, Sheets("Tabelle2").Columns(1), 0)
If Not IsError(x) Then
Zelle.Value = Sheets("Tabelle2").Cells(x, Zelle.Column).Value
CheckNeu = True
End If
Next
End If
If WorksheetFunction.CountIf(.Cells, True) Then
Intersect(.Cells, .SpecialCells(xlCellTypeConstants, 4).EntireRow).Copy
Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
Sheets("Tabelle2").Select
Sheets("Tabelle2").Range("B:G").RemoveDuplicates Array(1, 2, 3, 4, 5, 6), xlYes
MsgBox "Es sind neue unvollständige Adressdaten vorhanden. Bitte hier ergänzen und Vorgang wiederholen."
End If
End With
End Sub
Dim sp As String
sp = InputBox("Erste Spalte der Adresse (Name)")
If sp = "" Then Exit Sub
Sheets("Tabelle2").Columns(2).SpecialCells(xlCellTypeConstants).Offset(0, -1).FormulaR1C1 = "=concat(RC2:RC7)"
With Sheets("Tabelle1").Range(sp & "1").EntireColumn.Resize(, 6)
Adr_schlüssel = Cells(cl.Row, Name) & "_" & Cells(cl.Row, Straße) & "_" & Cells(cl.Row, Nummer) & IIf(PLZ <> 99, "_" & Cells(cl.Row, PLZ), "")
Case Left("Obernberger_Birkenweg_13_82256", Len(Adr_schlüssel)): Vorname = "Hans-Peter"