Supportnet / Forum / Tabellenkalkulation
Kopieren mit Abfrage
Frage
Hallo,
ich habe in einer Tabelle Sheet "Tabelle1" ab zeile 2 in Spalte A ca. 1400 Artikelnummern. Im Sheet "Tabelle2" befinden sich ca. 24000 Datensätze. Die Artikelnummern sind hier in der Spalte F und der zugehörige Lieferer in der Spalte E.
Ich möchte nun die ArtNr. aus Tabelle1 und Tabelle 2 vergleichen und bei übereinstimmung den Lieferer in Tabelle1 Spalte B kopieren.
Kann mir bitte jemand helfen?
Antwort 1 von Saarbauer
Hallo,
versuch es mal mit
=WENN(ISTFEHLER(INDIREKT(ADRESSE(VERGLEICH(A2;Tabelle2!F:F;0);5;1;;"Tabelle2")));"Kein Lierferant gefunden";INDIREKT(ADRESSE(VERGLEICH(A2;Tabelle2!F:F;0);5;1;;"Tabelle2")))
in Zelle B2, da ich von überschriften in Zeile 1 ausgehe.
Anschliessend nach unten Ziehen
Gruß
Helmut
versuch es mal mit
=WENN(ISTFEHLER(INDIREKT(ADRESSE(VERGLEICH(A2;Tabelle2!F:F;0);5;1;;"Tabelle2")));"Kein Lierferant gefunden";INDIREKT(ADRESSE(VERGLEICH(A2;Tabelle2!F:F;0);5;1;;"Tabelle2")))
in Zelle B2, da ich von überschriften in Zeile 1 ausgehe.
Anschliessend nach unten Ziehen
Gruß
Helmut
Antwort 2 von Christian61
Hallo helmut,
erst einmal vielen Dank für die schnelle Antwort.
ich habe die Formel in das Sheet "Tabelle1" Spalte B Zeile 2 kopiert.
ich erhalte dabei nur #NAME als Reference.
ich habe es mal mit einem abgeänderten Macro versucht, das tut es aber nicht.
Dim LoI As Long ' 1. Schleifenvariable
Dim LoJ As Long ' 2. Schleifenvariable
Dim LoLetzte1 As Long
Dim LoLetzte2 As Long
With Worksheets("Tabelle1")
' unabhängig von Excelversion für Spalte A (1)
LoLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With
With Worksheets("Tabelle2")
LoLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 6)), .Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
End With
For LoI = 1 To LoLetzte1 ' 1. Schleife alle Werte Spalte A
For LoJ = 1 To LoLetzte2 ' 2. Schleife alle Werte Spalte B
If Worksheets("Tabelle1").Cells(LoI, 1) <> "" Then ' Leerzellen nicht kennzeichnen
If Worksheets("Tabelle1").Cells(LoI, 1) = Worksheets("Tabelle2").Cells(LoJ, 6) Then
If Worksheets("Tabelle1").Cells(LoI, 2) = "" Then
Worksheets("Tabelle2").Cells(LoI, 5).Copy _
after:=Worksheets("Tabelle1").Cells(LoI, 2)
End If
End If
End If
Next LoJ
Next LoI
Application.CutCopyMode = False ' Zwischenspeicher löschen
End Sub
Gruß Christian
erst einmal vielen Dank für die schnelle Antwort.
ich habe die Formel in das Sheet "Tabelle1" Spalte B Zeile 2 kopiert.
ich erhalte dabei nur #NAME als Reference.
ich habe es mal mit einem abgeänderten Macro versucht, das tut es aber nicht.
Dim LoI As Long ' 1. Schleifenvariable
Dim LoJ As Long ' 2. Schleifenvariable
Dim LoLetzte1 As Long
Dim LoLetzte2 As Long
With Worksheets("Tabelle1")
' unabhängig von Excelversion für Spalte A (1)
LoLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With
With Worksheets("Tabelle2")
LoLetzte2 = IIf(IsEmpty(.Cells(Rows.Count, 6)), .Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
End With
For LoI = 1 To LoLetzte1 ' 1. Schleife alle Werte Spalte A
For LoJ = 1 To LoLetzte2 ' 2. Schleife alle Werte Spalte B
If Worksheets("Tabelle1").Cells(LoI, 1) <> "" Then ' Leerzellen nicht kennzeichnen
If Worksheets("Tabelle1").Cells(LoI, 1) = Worksheets("Tabelle2").Cells(LoJ, 6) Then
If Worksheets("Tabelle1").Cells(LoI, 2) = "" Then
Worksheets("Tabelle2").Cells(LoI, 5).Copy _
after:=Worksheets("Tabelle1").Cells(LoI, 2)
End If
End If
End If
Next LoJ
Next LoI
Application.CutCopyMode = False ' Zwischenspeicher löschen
End Sub
Gruß Christian
Antwort 3 von Saarbauer
Hallo,
da es bei mir funktioniert hat, ist es sehr schwer nachvollziehbar.
Gruß
Helmut
da es bei mir funktioniert hat, ist es sehr schwer nachvollziehbar.
Gruß
Helmut
Antwort 4 von Christian61
Hallo helmut,
funktioniert doch und zwar prima.
Schon fertig.
das problem lag am installierten Language-pack.habe ich nun von Englisch auf Deutsch gestellt und ab gings.
Vielen Dank noch einmal.
Gruß Christian
funktioniert doch und zwar prima.
Schon fertig.
das problem lag am installierten Language-pack.habe ich nun von Englisch auf Deutsch gestellt und ab gings.
Vielen Dank noch einmal.
Gruß Christian

