2.4k Aufrufe
Gefragt in Tabellenkalkulation von henryv Einsteiger_in (15 Punkte)
Hallo Forum,
ich habe folgendes Problem =>

In der Tabelle 1 in der Spalte A Werte die mit der Tabelle 2 Spalte A verglichen werden sollen. Sind die Werte aus den Spalten identisch, soll aus der Tabelle 2 aus der Spalte G übernommen werden.
Ideal wäre ein VBA Script

Schon jetzt besten Dank für Eure Hilfe!

Grüsse
HenryV

6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

das kannst du auch ohne VBA mit der Funktion SVERWEIS lösen:
=SVERWEIS(A1;Tabelle2!A1:G100;7;FALSCH)

Ich gehe davon aus, dass beide Tabellen in der selben Arbeitsmappe sind. Die Bezüge musst du entsprechend anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo,
wenn ich deine Angaben richtig vestehe, dann sollen bei Übereinstimmung der Werte, die Inhalte aus Spalte G in Spalte A übernommen werden.
Gruß
fedjo

In ein Modul einfügen:
Option Explicit
Sub Zwei_Spalten_vergleichen()
Dim T1 As Long
Dim T2 As Long
Dim L1 As Long ' Spalte A
Dim L2 As Long ' Spalte B
With Worksheets("Tabelle1")
L1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With
With Worksheets("Tabelle2")
L2 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With
For T1 = 1 To L1 ' Schleife Spalte A
For T2 = 1 To L2 ' Schleife Spalte B
If Worksheets("Tabelle1").Cells(T1, 1) <> "" Then
If Worksheets("Tabelle1").Cells(T1, 1) = Worksheets("Tabelle2").Cells(T2, 1) Then
Worksheets("Tabelle2").Cells(T2, 1) = Worksheets("Tabelle2").Cells(T2, 7)
End If
End If
Next T2
Next T1
End Sub
0 Punkte
Beantwortet von henryv Einsteiger_in (15 Punkte)
Hallo M.O.

SVERWEIS genügt mir leider nicht, da die Daten aus der Tabelle zwei Ende Monat jeweils verändert bzw. neu eingegeben werden.
Aber trotzdem Besten Dank für Deinen Hinweis!
Wünsche einen guten Rutsch in 2012!
HenryV
0 Punkte
Beantwortet von henryv Einsteiger_in (15 Punkte)
Hallo fedjo

Super Dein VBA Script hat mein Problem schon fast gelöst!
Du hast dies richtig verstanden, bei Übereinstimmung werden die Daten aus der Tabelle 2 Spalte G übernommen jedoch nicht in Spalte A sondern in Tabelle 1 Spalte M, das habe ich bereits angepasst :-),
nun habe ich jedoch noch das Problem das die Werte ab der Stelle wo eine Zeile keine übereinstimmung hat, die Werte versetzt zurückgegeben werden. Also jeweils um eine Zeile tiefer.
Hier mal ein Beispiel:
T1/T2 Zeile A6 in beiden Tabellen der gleiche Wert dann wird der Wert korrekt zurückgeben
T1/T2 Zeile A7 ungleicher Wert also in T1 ist der Eintrag nicht vorhanden bzw. unterschiedlich zu T2 nun wird der zugehörige Wert um eine Zeile versetzt zurückgegeben.

Hier noch Dein Script mit meinen Anpassungen:

Option Explicit
Sub Zwei_Spalten_vergleichen()
Dim T1 As Long
Dim T2 As Long
Dim L1 As Long ' Spalte A
Dim L2 As Long ' Spalte B

With Worksheets("Test")
L1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With

With Worksheets("EingabeBetriebskst")
L2 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With

For T1 = 1 To L1 ' Schleife Spalte A
For T2 = 1 To L2 ' Schleife Spalte B
If Worksheets("Test").Cells(T1, 1) <> "" Then
If Worksheets("Test").Cells(T1, 1) = Worksheets("EingabeBetriebskst").Cells(T2, 1) Then
Worksheets("Test").Cells(T2, 13) = Worksheets("EingabeBetriebskst").Cells(T2, 7)
End If
End If
Next T2
Next T1
End Sub

Wenn ich wüsst wie ich das Excel Sheet hochladen könnte wäre es wahrscheinlich einfacher dann würdest Du mein Problem gleich sehen :-) schon mal Besten Dank!
Und wenn ich Dich heute nicht mehr hören sollte einen guten Rutsch in's 2012

Grüsse
HenryV
0 Punkte
Beantwortet von henryv Einsteiger_in (15 Punkte)
Hi fedjo

Ich habe gerade den Fehler gefunden, habe im Script einen Eintrag nicht korrekt verändert ;-)

Hier mein bzw. Dein Script welches Einwandfrei funktioniert!

Option Explicit
Sub Zwei_Spalten_vergleichen()
Dim T1 As Long
Dim T2 As Long
Dim L1 As Long ' Spalte A
Dim L2 As Long ' Spalte B

With Worksheets("Test")
L1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With

With Worksheets("EingabeBetriebskst")
L2 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
End With

For T1 = 1 To L1 ' Schleife Spalte A
For T2 = 1 To L2 ' Schleife Spalte B
If Worksheets("Test").Cells(T1, 1) <> "" Then
If Worksheets("Test").Cells(T1, 1) = Worksheets("EingabeBetriebskst").Cells(T2, 1) Then
Worksheets("Test").Cells(T1, 13) = Worksheets("EingabeBetriebskst").Cells(T2, 7)
End If
End If
Next T2
Next T1
End Sub

Also nochmals herzlichen Dank für Deine Hilfe nun kann ich das Sheet komplett fertigstellen!

Also dann bleibt mir nur nochmals einen guten Rutsch und ein tolles 2012 zu wünschen!

Grüsse
HenryV
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo HenryV ,
ich wünsch dir ebenso einen guten Rutsch ins neue Jahr.
Wenn du für eine Frage eine Datei hochladen willst, dann hier:
http://www.file-upload.net/ und den Link ins Forum stellen.

Gruß
fedjo
...