Supportnet Computer
Planet of Tech

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


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.

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: