Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1880to1884
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

Loop Vergleich

Loop Vergleich
06.05.2022 14:27:55
Jonas
Hallo zusammen,
ich habe gerade ein Problem mit einer Tabelle welche so ausschaut:
Tabelle 1: Tabelle 2:
12 I nein I nein I nein I nein I nein I I 14 I ja I nein I nein I ja I nein I
13 I nein I nein I nein I nein I nein I I 12 I ja I nein I nein I ja I nein I
14 I nein I nein I nein I nein I nein I I 13 I ja I ja I ja I ja I nein I
15 I nein I nein I nein I nein I nein I I 15 I ja I ja I nein I ja I nein I
Die "I" sollen die nächste Zelle andeuten.
Nun soll der Code folgendes können:
1. Zahl in Tabelle 1 definieren
2. In Tabelle 2 nach der definierten Zelle suchen
3. Wenn definierte Zelle in Tabelle 2 gefunden den Inhalt der Zellen kopieren
4. Den kopierten Inhalt in Tabelle 1 zu der definierten Zahl einfügen
Und das ganze soll Zeile für Zeile wiederholt werden.
Ich bedanke mich schonmal für eure Hilfe.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
was ist deine Definition von "definieren"?
06.05.2022 15:11:07
"definieren"?
Hallo Jonas,
dein Vokabular ist sehr unpräsiz und manche Begriff könnten unten Umstand nur von Dir verstanden werden.
Also 6 Spalten in Tabelle1: 1 Zahl und 5 Ja/nein. Gleiche Konstellation in Tabelle2
alle Zellen der erste Spalte von Tab1 durchgehen,
Pro Stück, prüfen, ob in erste Spalte von Tab2 vorhanden,
wenn vorhanden den Inhalt dieser Zeile aus Tab2 in Tab1 übernehmen (überschreiben)
Dann so:

Sub Übernehmen()
Dim Z As Range
Dim Q As Range
Dim wsQ As Worksheet
Dim wsZ As Worksheet
With Worksheets("Tabelle1")
For Each Z In wsZ.Range("A1:A10")
Set Q = Worksheets("Tabelle2").Range("A:A").Find(what:=Z.Value)
If Not Q Is Nothing Then
If (Q.Offset(0, 1).Value = Z.Offset(0, 1).Value) _
And (Q.Offset(0, 2).Value = Z.Offset(0, 2).Value) _
And (Q.Offset(0, 3).Value = Z.Offset(0, 3).Value) _
And (Q.Offset(0, 4).Value = Z.Offset(0, 4).Value) _
And (Q.Offset(0, 5).Value = Z.Offset(0, 5).Value) Then Z.Resize(1, 6) = Q.Resize(1, 6).Value
End If
Next
End With
End Sub

VG
Yal
Anzeige
AW: was ist deine Definition von "definieren"?
06.05.2022 16:07:18
"definieren"?
Vielen Dank für deine Hilfe Yal,
leider funktioniert der Code bei mir noch nicht richtig.
Nachdem ich allerdings wsQ und wsZ noch als Worksheet("Tabelle1") und ... bezeichnet habe läuft der Code durch.
Hab mir jetzt im Code auch angeschaut ob er erkennt wenn in einer der Zellen etwas steht. Das klappt. Nur werden mir die Daten nicht in mein Tabellenblatt eingetragen.

Sub Übernehmen()
Dim Z As Range
Dim Q As Range
Dim wsQ As Worksheet
Dim wsZ As Worksheet
Set wsZ = Worksheets("Tabelle2")
Set wsQ = Worksheets("Tabelle1")
With Worksheets("Tabelle1")
For Each Z In wsZ.Range("A1:A10")
Set Q = Worksheets("Tabelle2").Range("A1:A10").Find(what:=Z.Value)
If Not Q Is Nothing Then
If (Q.Offset(0, 1).Value = Z.Offset(0, 1).Value) _
And (Q.Offset(0, 2).Value = Z.Offset(0, 2).Value) _
And (Q.Offset(0, 3).Value = Z.Offset(0, 3).Value) _
And (Q.Offset(0, 4).Value = Z.Offset(0, 4).Value) _
And (Q.Offset(0, 5).Value = Z.Offset(0, 5).Value) Then Z.Resize(1, 6) = Q.Resize(1, 6).Value
End If
Next
End With
End Sub
Hast du eine Idee woran es liegen könnte?
Anzeige
AW: was ist deine Definition von "definieren"?
06.05.2022 16:13:16
"definieren"?
hallo Jonas,
ja sorry. Ich hatte zuerst mit Variablen wsZ (Ziel) und wsQ (Quelle) gearbeitet und am Ende gedacht, es sind zu viele unnötige Variablen.
In

For Each Z In wsZ.Range("A1:A10")
Set Q = Worksheets("Tabelle2").Range("A1:A10").Find(what:=Z.Value)
müsste daher den wsZ vor dem Range in der For-Zeile weg. Es bleibt .Range("A1:A10")
Der Punkt bezieht sich dann auf dem With.
VG
Yal
AW: was ist deine Definition von "definieren"?
06.05.2022 16:16:37
"definieren"?
es fällt mir jetzt gerade ein, und ich frage mich: wenn die erste 6 Zellen der Zeilen gleich sind, wo ist der Sinn der Kopie von Tab2 nach Tab1? Es sind sowieso schon die gleiche Inhalt?
Wenn mehr als nur die 6 Spalten, dann in den Resize ändern (muss auf beide Seiten des "=" die gleiche Dimensionierung sein).
VG
Yal
Anzeige
AW: was ist deine Definition von "definieren"?
06.05.2022 16:25:52
"definieren"?
Hi die Sache ist die Zahlen in Tabelle1 kommen aus einem nicht Excel Programm und werden täglich aktualisiert. Manchmal ändert sich die Reihenfolge der Zahlen aus dem externen Programm. Und da diese Tabelle1 alle 24 aktualisiert werden muss wird zuerst Tabelle1 in Tabelle2 kopiert, dann Tabelle1 mit Daten aus dem anderen Programm überschrieben und "ja" und "nein" steht für den Fortschritt der einzelnen Zahlen und muss daher wieder in Tabelle 1 eingefügt werden.
Ich hoffe das war einigermaßen verständlich :D
AW: was ist deine Definition von "definieren"?
06.05.2022 16:29:44
"definieren"?
Ich habe leider nicht verstanden was jetzt noch raus muss könntest du mir bitte den Code nochmal als ganzes schicken?
Vielen Dank
Anzeige
AW: was ist deine Definition von "definieren"?
06.05.2022 16:42:51
"definieren"?
den wsZ in der For-Zeile muss weg. es bleibt folgendes Übrig:

Sub Übernehmen()
Dim Z As Range
Dim Q As Range
With Worksheets("Tabelle1")
For Each Z In .Range("A1:A10")
Set Q = Worksheets("Tabelle2").Range("A1:A10").Find(what:=Z.Value)
If Not Q Is Nothing Then
If (Q.Offset(0, 1).Value = Z.Offset(0, 1).Value) _
And (Q.Offset(0, 2).Value = Z.Offset(0, 2).Value) _
And (Q.Offset(0, 3).Value = Z.Offset(0, 3).Value) _
And (Q.Offset(0, 4).Value = Z.Offset(0, 4).Value) _
And (Q.Offset(0, 5).Value = Z.Offset(0, 5).Value) Then Z.Resize(1, 6) = Q.Resize(1, 6).Value
End If
Next
End With
End Sub
Du hast Wahrscheinlich den wsZ durch Tabelle1 ersetzt:

Sub Übernehmen()
Dim Z As Range
Dim Q As Range
With Worksheets("Tabelle1")
For Each Z In Worksheets("Tabelle1").Range("A1:A10")
Set Q = Worksheets("Tabelle2").Range("A1:A10").Find(what:=Z.Value)
If Not Q Is Nothing Then
If (Q.Offset(0, 1).Value = Z.Offset(0, 1).Value) _
And (Q.Offset(0, 2).Value = Z.Offset(0, 2).Value) _
And (Q.Offset(0, 3).Value = Z.Offset(0, 3).Value) _
And (Q.Offset(0, 4).Value = Z.Offset(0, 4).Value) _
And (Q.Offset(0, 5).Value = Z.Offset(0, 5).Value) Then Z.Resize(1, 6) = Q.Resize(1, 6).Value
End If
Next
End With
End Sub
was unnötig wäre, weil Worksheets("Tabelle1") schon in dem abkürzenden "With" vorhanden ist.
Etwas was mit einem Punkt anfängt bedeutet "ich nehme die Abkürzung"
Die beide folgende Version sind absolut gleichwertig:

'v1: abgekurzt:
With Worksheets("Tabelle1")
.Range("A1") = .Range("C1").Value
.Range("A2") = .Range("C2").Value
End With
'v2: volle Länge und schwer lesbar
Worksheets("Tabelle1").Range("A1") = Worksheets("Tabelle1").Range("C1").Value
Worksheets("Tabelle1").Range("A2") = Worksheets("Tabelle1").Range("C2").Value
VG
Yal
Anzeige
AW: was ist deine Definition von "definieren"?
06.05.2022 16:47:54
"definieren"?
Ok jetzt läuft es ohne Anpassungen durch :) Nur trägt er mir die Daten immernoch nicht in meine Tabelle1 ein :/
AW: was ist deine Definition von "definieren"?
06.05.2022 16:34:32
"definieren"?
Ja, es ist einigemassen verständlich, beantworte die Frage aber nicht. Dessen Antwort übrigens nicht mir gegeben werden soll, sondern dir selbst: VBA Coding muss entweder sinnvoll oder gar nicht sein.
Wenn eine Liste1 mit "10, a, b, c, d, e" mit einer Liste2 mit "10, a, b, c, d, e" übereinstimmt, wo ist der Mehrwert, diese Liste1 mit der Inhalt der Liste2 zu überschreiben: diese sind eh gleich.
VG
Yal
AW: was ist deine Definition von "definieren"?
06.05.2022 16:40:33
"definieren"?
Ich verstehe ja den Sinn sonst würde ich es nicht machen.
Bei den Daten in Tabelle1 wird der Fortschritt immer mit Nein angebeben.
In Tabelle2 ist der aktuelle Fortschritt angegeben also in manchen Zellen mit "ja".
So nun werden bei der Aktualisierung gerne die vordersten Zahlen vertauscht und möchte dass der Fortschritt auch wieder in der richtigen Zeile landet.
Also Fortschritt von 12 in Tabelle2 soll in Tabelle1 nicht ausversehen bei 13 landen da die vorderste Zahlenreihe getauscht wurde.
Anzeige
AW: was ist deine Definition von "definieren"?
06.05.2022 16:52:09
"definieren"?
Dass Du verstehst, was Du willst, ist eine gute Sache. Ich bin schon immer davon ausgegangen.
Nur: deine Erklärung passt nicht mit deiner Fragestellung und dementsprechend nicht mit meiner Antwort (worauf ich bereit 3mal darauf hingewiesen).
Mir scheint eher, dass Du nur den Inhalt der erste Spalte also nur den Projektnummern miteinander vergleichen möchte und nicht alle 6 Werten, weil sie ja unterschiedlich sein können.
Der Code wäre wesentlich kürzer.

Sub Übernehmen()
Dim Z As Range
Dim Q As Range
With Worksheets("Tabelle1")
For Each Z In .Range("A1:A10")
Set Q = Worksheets("Tabelle2").Range("A1:A10").Find(what:=Z.Value)
If Not Q Is Nothing Then Z.Resize(1, 6) = Q.Resize(1, 6).Value
Next
End With
End Sub
Die richtige Antwort bekommt man mit der richtigen Frage. Man darf eine falsche Frage stellen, aber man müsste in der Lage sein zu erkennen, dass die Frage falsch war.
Schönes Wochenende.
VG
Yal
Anzeige
Sorry, mein Fehler.
06.05.2022 16:56:29
Yal
Hallo Jonas,
Ich habe deine orignale Frage nochmal gelesen. Die Missinterpretation war meinerseits. Deine Fragestellung war, wie gesagt, nicht präzis genug.
Siehe mein Code aus dem Beitrag 16:52.
Das sollte das gewünschte Ergebnis liefern.
VG
Yal
AW: was ist deine Definition von "definieren"?
07.05.2022 09:57:12
"definieren"?
Hi Yal,
vielen Dank für deine Hilfe das klappt jetzt perfekt.
Merke: Fragestellung genauer definieren dann kann einem auch geholfen werden.
Vielen Dank :D und ein schönes Wochenende.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige