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

Makro für SVERWEIS zw. 2 Tabellen

Makro für SVERWEIS zw. 2 Tabellen
15.10.2015 17:43:38
Henke
Liebe Mitglieder dieses Forums,
ich habe mich hier registriert, um endlich dieses nervige VBA-Problem vom Tisch zu bekommen, welches mir schon viel Zeit geraubt hat.
Vielleicht finde ich hier ja Hilfe.
Zur Sache:
Hier läuft ein Programm, welches Excel Listen generiert.
In dieser Listen stehen Personalnummern, Namen und Vornamen, sowie sich ändernde Zusatzinformationen, welche aber für die Problemlösung unberücktsichtigt bleiben können.
Der Aufbau der Listen ist zwar nicht statisch, aber die entscheidenen Spalten sind konstant (A=Personalnummer, B=Name, C= Vorname).
Die Zeilenposition kann sich unterscheiden (der erste Datensatz begint in Zeile 5 bis 10)
Einige dieser Namen werden aus datenschutzrechtlichen Gründen durch Falschnamen ersetzt. Um diese geht es bei meiner Anfrage.
Für bestimmte Auswertungen, soll ein Excel Makro erstellt werden, welches "auf Knopfdruck" die falschen Namen durch die Echtnamen ersetzt und die restlichen Namen unberücksichtigt lässt, da diese bereits stimmen.
In einer bereits vorhandenen Tabelle (schlüssel.xlsm), werden die Personalnummern und die echten Namen der in den Listen ausgegebenen Falschnamen gespeichert. (ebenfalls Spalte:(A=Personalnummer, B=Name, C= Vorname)
Das Makro müsste also nach dem Start in dem aktuell geöffeneten Tabellenblatt (dessen Name nicht immer gleich ist) in jedem Datensatz nach der Personalnummer aus Spalte A in der "Schlüssel"tabelle in Spalte A suchen.
Wenn eine identische Personalnummer gefunden wird, sollen die Spalten B und C durch die Werte in der Schlüsseltabelle (ebenfalls B und C) ersetzt werden.
Folgendes Script vergleicht die Tabellenblätter "Schlüssel" und "Mitarbeiter" in einer Tabelle und ersetzt die Namen wie gewollt. Das funktioniert soweit. Aber wie überrede ich VBA dazu, in einer anderen Datei, welche möglichst nur verdeckt geöffnet wird, nach der Personalnummer zu suchen und die falschen Namen in der aktuellen Tabelle durch Knopfdruck zu ersetzen?
Sub NameErsetzen()
Dim wksS As Worksheet, wksT As Worksheet
Dim vRow As Variant
Dim iRow As Integer
Set wksS = Worksheets("Schlüssel")
Set wksT = Worksheets("Mitarbeiter")
For iRow = 1 To WorksheetFunction.CountA(wksS.Columns(1))
vRow = Application.Match(wksS.Cells(iRow, 1).Value, wksT.Columns(1), 0)
If Not IsError(vRow) Then
wksT.Cells(vRow, 2).Value = wksS.Cells(iRow, 2).Value
wksT.Cells(vRow, 3).Value = wksS.Cells(iRow, 3).Value
End If
Next iRow
wksT.Select
End Sub

Ich bin für jeden Hinweis sehr dankbar.
LG
Henke

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für SVERWEIS zw. 2 Tabellen
16.10.2015 10:37:05
ChrisL
Hi Henke
Sub NameErsetzen()
Dim WB1 As Workbook
Dim wksS As Worksheet, wksT As Worksheet
Dim vRow As Variant
Dim iRow As Integer
Application.ScreenUpdating = False
Set wksT = ThisWorkbook.ActiveSheet
Set WB1 = Workbooks.Open("C:\Pfad\schlüssel.xlsm")
Set wksS = WB1.Worksheets("Schlüssel")
For iRow = 1 To WorksheetFunction.CountA(wksS.Columns(1))
vRow = Application.Match(wksS.Cells(iRow, 1).Value, wksT.Columns(1), 0)
If Not IsError(vRow) Then
wksT.Cells(vRow, 2).Value = wksS.Cells(iRow, 2).Value
wksT.Cells(vRow, 3).Value = wksS.Cells(iRow, 3).Value
End If
Next iRow
WB1.Close
Application.ScreenUpdating = True
End Sub

cu
Chris

Anzeige
AW: Makro für SVERWEIS zw. 2 Tabellen
16.10.2015 17:11:33
Henke
Hallo Chris,
du hast mich mit deinem Beitrag ein ganzes Stück nach vorn gebracht. Ich musste nur noch "Set wksT = ThisWorkbook.ActiveSheet" durch "Set wksT = ActiveWorkbook.ActiveSheet" ersetzen und schon hat's funktioniert. Ich danke dir für deine schnelle und zielführende Idee. Nun muss ich nur noch herausfinden, wie sich die Datei (aus der ich das Makro ausführen lasse) automatisch nach dessen Abarbeitung schließt. Aber das erst nach dem Urlaub.
Tschüss
Henke

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige