Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Namen aus einer anderen tabelle finden per vba
Frage
Hallo!
Ich habe zwei Tabellen.
In der ersten eine lange reihe aus folgenden daten:
Personen-ID (zb. e923002)
Name der person (zb. Ano Nym)
In der zweiten tabelle sind die personen nicht nach namen oder id sortiert sondern in gruppen eingeteilt in denen die ids stehen.
Wie kann ich jetzt mittels vba in der tabelle 1 nach den IDs aus tabelle zwei suchen und den namen immer rechts neben die id schreiben?
Damit ihr euch vorstellen könnt wie das aussieht:
Tabelle 1:
e931 Franz
z234 Friz
z345 Test
Tabelle 2:
gruppe1: Namen: gruppe2: Namen:
e931 z234
z345
Wie kann ich das wohl anstellen?
Antwort 1 von Vba-problemkind
Zitat:
gruppe1: Namen: gruppe2: Namen:
e931 z234
z345
gruppe1: Namen: gruppe2: Namen:
e931 z234
z345
Keine ahnung warum das so komisch formatiert ist.
Es sollte e931 unter gruppe 1 stehen und die anderen beiden IDs unter gruppe2.
Ich denke ihr könnt es euch vorstellen
Antwort 2 von coros
Hallo VBA-Problemkind,
kopiere nachfolgendes Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche.
Mit dem Makro wird im Blatt "Personen" in Spalte A der Text in jeder Zelle ausgelesen und nach ID und Name getrennt. Danach wird in Blatt "Gruppen" nach der ID gesucht. Wenn gefunden, wird bei der gefundenen ID der Name angehängt.
Du musst in dem Makro noch die Blattnamen in den Zeilen
anpassen.
Ich hoffe, Du kommst klar. bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
kopiere nachfolgendes Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche.
Option Explicit
Sub Suchen_ergaenzen()
Dim iTab1 As Integer
Dim SearchName As String, InsertName As String
Dim wks1 As Worksheet, wks2 As Worksheet
Dim LowLetzte As Long, Searchtxt As Range, CellRange As String
'Blattname setzen
Set wks1 = Sheets("Personen")
Set wks2 = Sheets("Gruppen")
'Letzte beschriebene Zeile in Blatt mit den Personendaten ermitteln
LowLetzte = wks1.Range("A65536").End(xlUp).Row
'Schleife um jeden Eintrag in Personenblatt zu prüfen
For iTab1 = 2 To LowLetzte
'Personen ID ermitteln
SearchName = Mid(wks1.Cells(iTab1, 1), 1, InStr(wks1.Cells(iTab1, 1), " ") - 1)
'Personennamen ermitteln
InsertName = Mid(wks1.Cells(iTab1, 1), InStr(wks1.Cells(iTab1, 1), " ") + 1, Len(wks1.Cells(iTab1, 1)))
'Bereich der in Gruppenblatt durchsucht werden soo festlegen
With wks2.Range("A1:W65536")
'Find-Methode starten um in Gruppenblatt übereinstimmungen zu finden
Set Searchtxt = .Find(What:=SearchName, LookIn:=xlValues)
If Not Searchtxt Is Nothing Then
CellRange = Searchtxt.Address
Do
'Wenn Übereinstimmung gefunden, den Text in der Zelle um den Personennamen erweitern
wks2.Range(CellRange) = wks2.Range(CellRange) & " " & InsertName
'Nächste Suche starten
Set Searchtxt = .FindNext(Searchtxt)
Loop While Not Searchtxt Is Nothing And Searchtxt.Address <> CellRange
End If
End With
Next
End Sub
Mit dem Makro wird im Blatt "Personen" in Spalte A der Text in jeder Zelle ausgelesen und nach ID und Name getrennt. Danach wird in Blatt "Gruppen" nach der ID gesucht. Wenn gefunden, wird bei der gefundenen ID der Name angehängt.
Du musst in dem Makro noch die Blattnamen in den Zeilen
Set wks1 = Sheets("Personen")
Set wks2 = Sheets("Gruppen")
anpassen.
Ich hoffe, Du kommst klar. bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.