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

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 :)

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

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) :)

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

195 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige