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

Forumthread: Vergleich zweier Tabellenblätter VBA

Vergleich zweier Tabellenblätter VBA
23.03.2021 09:19:15
themanwhoneedshelp
Liebes Forum-Team,
ich habe zwei Tabellenblätter, welche ich vergleichen möchte. Als Vergleichsparameter dient die Personalnummer. Es soll nachgesehen werden, welche Personen eine Maschine haben und diese NICHT benötigen und welche eine benötigen aber KEINE haben. (fiktives Beispiel)
Tabellenblatt 1 (benötigen diese Maschine):
Personalnummer(A1) Vorname(B1) Nachname(C1)
11 Max Mustermann
12 Heinz Huber
13 Lukas Lust
Tabellenblatt 2 (haben diese Maschine):
Personalnummer(A1) Vorname(B1) Nachname(C1)
11 Max Mustermann
14 Sarah Selten
13 Lukas Lust
Output in einem dritten Tabellenblatt
Personen die eine benötigen und keine haben:
Personalnummer(A1) Vorname(B1) Nachname(C1)
12 Heinz Huber
Personen die eine haben aber keine benötigen:
Personalnummer(E1) Vorname(F1) Nachname(G1)
14 Sarah Selten
Ich hoffe ich war nicht zu verwirrend :D
Ich bedanke mich vielmals im Voraus :)

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Vergleich zweier Tabellenblätter VBA
23.03.2021 09:31:56
Herbert_Grom
Hallo,
vielleicht hättest du auch noch eine Beispiel-Arbeitsmappe, dann könnte ich dir evtl. auch helfen!
Servus

AW: Vergleich zweier Tabellenblätter VBA
23.03.2021 09:38:39
fcs
Hallo themanwhoneedshelp
es wird einfacher dir zu helfen, wenn du eine Beispieldatei hochlädst.
Mit den drei Spalten ist ein Vergleich nicht möglich, es sei denn fette Schrift kennzeichnet Personen, die die Maschine benötigen bzw. die diese Maschine haben, aber nicht benötigen.
Besser wäre aber eine Spalte in der diese Information mit X markiert ist oder mit Ja/Nein.
LG
Franz

Anzeige
Ihr denkt zu kompliziert...
23.03.2021 09:49:59
MRUTOR
Hallo,
ganz einfach. Es geht nur drum, dass alle Namen, die in beiden Listen vorkommen, ausser Acht gelassen werden koennen, da sie die Maschine haben aber auch benoetigen.
Heinz Huber steht nur in Tabelle 1, da er sie benoetigt aber nicht in Tabelle 2, da er sie nicht hat. Und Sarah Selten steht nur in Tabelle 2, da sie sie hat aber nicht in Tabelle 1, da sie sie nicht benoetigt.
Gruss Tor

Anzeige
In etwa so
23.03.2021 10:33:19
MRUTOR
Hallo themanwhoneedshelp,
ich denke, dass der nachfolgende Code macht, was du moechtest. Code in ein allgemeines Modul:

Option Explicit
Sub Finden()
Dim wsNeed As Worksheet, wsHave As Worksheet, wsResult As Worksheet
Dim lngLast1 As Long, lngLast2 As Long, lngLast3 As Long, lngRow As Long
Set wsNeed = ThisWorkbook.Sheets("Tabelle1")
Set wsHave = ThisWorkbook.Sheets("Tabelle2")
Set wsResult = ThisWorkbook.Sheets("Tabelle3")
lngLast1 = wsNeed.Cells(Rows.Count, 1).End(xlUp).Row
lngLast2 = wsHave.Cells(Rows.Count, 1).End(xlUp).Row
lngLast3 = wsResult.Cells(Rows.Count, 1).End(xlUp).Row
wsResult.Range("A2:G" & lngLast3).ClearContents
For lngRow = 2 To lngLast1
lngLast3 = wsResult.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIfs(wsHave.Columns(1), wsNeed.Cells(lngRow, 1)) = 0 Then
wsNeed.Range("A" & lngRow & ":C" & lngRow).Copy wsResult.Range("A" & lngLast3 + 1)
End If
Next lngRow
For lngRow = 2 To lngLast1
lngLast3 = wsResult.Cells(Rows.Count, 5).End(xlUp).Row
If WorksheetFunction.CountIfs(wsNeed.Columns(1), wsHave.Cells(lngRow, 1)) = 0 Then
wsHave.Range("A" & lngRow & ":C" & lngRow).Copy wsResult.Range("E" & lngLast3 + 1)
End If
Next lngRow
End Sub

Wie du das Makro startest, musst du selbst entscheiden.
Gruss Tor

Anzeige
AW: In etwa so
23.03.2021 10:36:23
MRUTOR
Sorry, kleiner Fehler drin. Nochmal:

Option Explicit
Sub Finden()
Dim wsNeed As Worksheet, wsHave As Worksheet, wsResult As Worksheet
Dim lngLast1 As Long, lngLast2 As Long, lngLast3 As Long, lngRow As Long
Set wsNeed = ThisWorkbook.Sheets("Tabelle1")
Set wsHave = ThisWorkbook.Sheets("Tabelle2")
Set wsResult = ThisWorkbook.Sheets("Tabelle3")
lngLast1 = wsNeed.Cells(Rows.Count, 1).End(xlUp).Row
lngLast2 = wsHave.Cells(Rows.Count, 1).End(xlUp).Row
lngLast3 = wsResult.Cells(Rows.Count, 1).End(xlUp).Row
wsResult.Range("A2:G" & lngLast3).ClearContents
For lngRow = 2 To lngLast1
lngLast3 = wsResult.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIfs(wsHave.Columns(1), wsNeed.Cells(lngRow, 1)) = 0 Then
wsNeed.Range("A" & lngRow & ":C" & lngRow).Copy wsResult.Range("A" & lngLast3 + 1)
End If
Next lngRow
For lngRow = 2 To lngLast2
lngLast3 = wsResult.Cells(Rows.Count, 5).End(xlUp).Row
If WorksheetFunction.CountIfs(wsNeed.Columns(1), wsHave.Cells(lngRow, 1)) = 0 Then
wsHave.Range("A" & lngRow & ":C" & lngRow).Copy wsResult.Range("E" & lngLast3 + 1)
End If
Next lngRow
End Sub


Anzeige
AW: In etwa so
23.03.2021 17:59:56
themanwhoneedshelp
Hallo,
danke für all eure Antworten. Sorry, dass ich keine Beispielmappe hochgeladen. Für das nächste Mal weiß ich Bescheid. :-/
@MRUTOR: deine Lösung passt super. Vielen lieben Dank!!! :)
LG

gerne...
24.03.2021 06:35:33
MRUTOR
Viel Spass.

AW: In etwa so
23.03.2021 18:01:46
themanwhoneedshelp
Kann ich irgendwo angeben, dass diese Antwort mein Problem gelöst hat? (sorry bin neu hier) :)

Anzeige
AW: In etwa so
24.03.2021 06:35:01
MRUTOR
Hallo,
brauchst du nicht. Kann man hier auch nicht. Nur, wenn die Frage nicht beantwortet ist, kann man diese wieder als offen markieren. Ansonsten gilt sie als geloest.
Gruss Tor

AW: Vergleich zweier Tabellenblätter VBA
23.03.2021 17:59:11
themanwhoneedshelp
Hallo,
danke für all eure Antworten. Sorry, dass ich keine Beispielmappe hochgeladen. Für das nächste Mal weiß ich Bescheid. :-/
@MRUTOR: deine Lösung passt super. Vielen lieben Dank!!! :)
LG
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige