online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Mc_DoC vom 03.10.2020, 15:42 Options

Tabellenblätter vergleichen und mehrere Zellen kopieren

Hallo,

man stelle sich folgendes Problem vor:

Eine Tabelle enthält mehrere Arbeitsblätter. Ich möchte nun die Werte in Spalte A in Tabellenblatt A mit den Werten in Spalte A in Tabellenblatt B vergleichen. Wenn die Werte identisch sind, sollen bestimmte Zellen der gleichen Zeile in ein neues Tabellenblatt kopiert werden. Z.B. wenn A1(in Tabellenblatt A) = A1 (in Tabellenblatt B), dann kopiere A1 (Tab.A), B1(Tab.B), H1(Tab.A), etc. in Tabellenblatt X.
Ich habe schon ein Makro gefunden (siehe hier), dass die erste Spalte verschiedener Tabellenblätter miteinander vergleicht und doppelte in ein neues Tabellenblatt kopiert, allerdings bräuchte ich noch die Kopierfunktion für einige Zellen(4-5) mehr.
Wäre echt super wenn mir jemand helfen könnte.
Vielen Dank !

Mc_DoC


Antwort schreiben

Antwort 1 von nighty vom 06.10.2020, 08:22 Options

hi Mc_DoC :-)

bitte frage corus der das makro erstellt hat oder stelle deine frage neu mit besserer beschreibung

bedenke das keiner gerne makros umschreibt,neu schreiben ist meist effektiver

gruss nighty

Antwort 2 von nighty vom 06.10.2020, 09:16 Options

hi Mc_DoC :-)

hier ein beispiel

gruss nighty

Option Explicit
Sub vergleich()
Call EventsOff
Dim zaehler0 As Long, zaehler1 As Long, spaltea1 As Long
If Sheets(1).Range("A" & Rows.Count).End(xlUp).Row > Sheets(2).Range("A" & Rows.Count).End(xlUp).Row Then
spaltea1 = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
Else
spaltea1 = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
End If
ReDim sh1(spaltea1, 1) As Variant
ReDim sh2(spaltea1, 1) As Variant
Sheets(2).Select
sh2() = Range(Cells(1, 1), Cells(spaltea1, 1))
Sheets(1).Select
sh1() = Range(Cells(1, 1), Cells(spaltea1, 1))
For zaehler0 = 1 To spaltea1
For zaehler1 = 1 To spaltea1
If sh1(zaehler0, 1) = sh2(zaehler1, 1) Then
Rem hier ein beispiel einer zeile die kopiert wird
Rows(zaehler0 & ":" & zaehler0).Copy Sheets(2).Range("A" & zaehler1)
End If
Next zaehler1
Next zaehler0
Call EventsOn
End Sub


Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub


Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Antwort 3 von nighty vom 06.10.2020, 09:28 Options

hi all :-)

fuer interessierte :-)

in diesem beispiel sind die beiden selectionen zwingend,eine der seltenden ausnahmen,hier bei der zuweisung des array

gruss nighty

Antwort 4 von Mc_DoC vom 06.10.2020, 18:46 Options

Hallo nighty,

vielen Dank für deine Hilfe. Habe das Makro noch nicht ausprobiert, bin noch am Anpassen und da ich keine Ahnung von VB habe, kann das noch etwas dauern.
Wie kann ich denn jetzt mehrere Zellen kopieren? Muss ich diese Zeile einfach kopieren und anpassen?
"Rows(zaehler0 & ":" & zaehler0).Copy Sheets(2).Range("A" & zaehler1)"
Wohin wird hier jetzt eigentlich kopiert? Würde nämlich gerne das Tabellenblatt angeben...
Ok, ich hoffe ich falle nicht zu sehr auf die Nerven, bin halt absoluter Neuling was solche Sachen angeht...
Also nochmal danke.
Gruß, Mc_DoC

Antwort 5 von Mc_DoC vom 06.10.2020, 19:25 Options

Hallo nochmal!

Ok, ich versuche mich nochmal genauer auszudrücken.

Ich möchte nur die erste Spalte von Tabellenblatt "A" mit Tabellenblatt "B" vergleichen. Wenn es hier eine Übereinstimmung gibt, möchte ich mehrere Zellen der betreffenden Zeile in ein neues Tabellenblatt kopieren, und zwar Zellen aus Tabellenblatt "A" und aber auch aus Tabellenblatt "B".

Z.B. Zelle A8 von Tabellenblatt "A" entspricht Zelle A15 von Tabellenblatt "B". Jetzt sollen die Zellen C8, H8 und K8 aus Tabellenblatt "A" , die Zellen B15, G15 und L15 aus Tabellenblatt "B" sowie der übereinstimmende Wert aus Spalte A in ein neues Tabellenblatt (sagen wir "X") in eine Zeile hintereinander kopiert werden.
Und dieser Vorgang soll eben so lange wiederholt werden bis alle Übereinstimmungen im neuen Tabellenblatt versammelt sind.

Hoffentlich war es jetzt verständlicher, würde mir nämlich viel Arbeit sparen (es geht um ca. 13000 Zeilen die verglichen werden sollen).

Ok, also nochmals danke!

Viele Grüße,
Mc_DoC

Antwort 6 von nighty vom 07.10.2020, 18:08 Options

hi Mc_DoC

ein versuch :-)

gruss nighty

ueberschrifte vorrausgesetzt in allen drei tabellen
tabelle1 spalte a wird mit tabelle2 spalte a verglichen
bei fund angegebene zellen von tabelle1 wie tabelle2
nach tabelle3 kopiert

Option Explicit
Sub vergleich()
Call EventsOff
Dim zaehler0 As Long, zaehler1 As Long, spaltea1 As Long, zeile As Long
If Sheets(1).Range("A" & Rows.Count).End(xlUp).Row > Sheets(2).Range("A" & Rows.Count).End(xlUp).Row Then
spaltea1 = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
Else
spaltea1 = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
End If
ReDim sh1(spaltea1, 1) As Variant
ReDim sh2(spaltea1, 1) As Variant
Sheets(2).Select
sh2() = Range(Cells(1, 1), Cells(spaltea1, 1))
Sheets(1).Select
sh1() = Range(Cells(1, 1), Cells(spaltea1, 1))
For zaehler0 = 2 To spaltea1
For zaehler1 = 2 To spaltea1
If sh1(zaehler0, 1) = sh2(zaehler1, 1) Then
zeile = Sheets(3).Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets(3).Range("A" & zeile & ":D" & zeile) = Array(Sheets(1).Range("A" & zaehler0), Sheets(1).Range("C" & zaehler0), Sheets(1).Range("H" & zaehler0), Sheets(1).Range("K" & zaehler0))
Sheets(3).Range("E" & zeile & ":G" & zeile) = Array(Sheets(2).Range("B" & zaehler1), Sheets(2).Range("G" & zaehler1), Sheets(2).Range("L" & zaehler1))
End If
Next zaehler1
Next zaehler0
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Ähnliche Themen

Zellen vergleichen
Defendere  08.05.2007 - 74 Hits - 2 Antworten

Zellen vergleichen
RalfH  02.11.2007 - 107 Hits - 3 Antworten

Statistik bezogen auf mehrere Zellen unterschiedlicher Tabellenblätter
Alexsusi  21.04.2008 - 35 Hits - 2 Antworten

Zellen vergleichen und kopieren
Rudi81  23.05.2008 - 31 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 11:26:25 2026