Sooo... ich hab eine Excel-Aufgabe zu lösen und da meine VB-Fähigkeiten nicht ganz so toll sind, ergeht hiermit ein offizieller Hilfeschrei. <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />
Problemstellung:
Ich habe zwei Tabellen. Mehrere Zellen aus Spalte 1 beider Tabellen sind identisch, viele aber auch nicht - hinzu kommt noch, daß die Positionen der Zeilen variieren, d.h. Zeile 6 in Tabelle 1 kann durchaus Zeil 10 in Tabelle 2 sein.
Was ich machen muß:
Spalte 1 der beiden Tabellen vergleichen und für jede Zeile, in der es eine Übereinstimmung gibt, den Wert in Spalte 2 von Tabelle 2 in Spalte 3 der jeweiligen Zeile in Tabelle 1 kopieren.
Ich weiß nicht, was das einfachste wäre oder ob es da schon vorgefertigte Lösungen gibt. Folgendes ist mir spontan eingefallen:
zeile1 = {Zeilenanzahl in Tabelle 1}
zeile2 = {Zeilenanzahl in Tabelle 2}
i = {Schleifenvariable}
j = {Schleifenvariable}
For i = 1 To zeile1
For j = 1 To zeile2
{
Vergleiche Tabelle1.Zelle(i,1) mit Tabelle2.Zelle(j,1)
Wenn identisch
{
Kopiere Tabelle2.Zelle(j,2) nach Tabelle1.Zelle(i,3)
Lösche komplette Tabelle2.Zeile(j)
zeile2 = zeile2 - 1
Brich Schleife ab
}
}
Also ich vergleich jede Zeile von Tabelle 1 mit jeder Zeile von Tabelle 2... wenn es eine Übereinstimmung gibt, wird der gewünschte Wert kopiert. Zusätzlich wird die komplette Zeile gelöscht, damit nicht erneut und unnötigerweise damit verglichen wird. Um die maximalen Schleifendurchläufe zu minimieren, wird auch die Anzahl der Zeilen in Tabelle 2 dann um 1 gesenkt.
Wenn es keine Übereinstimmung gibt, wird die Schleife komplett durchlaufen.
Abgesehen von der Frage, ob das Vorgehen nicht vereinfacht werden kann, wäre es nun für mich interessant zu wissen, wie sich das alles korrekt in Visual Basic als Makro-Code für Excel ausgedrückt werden kann.
Sachdienliche Hinweise werden mit ewigem Dank meinerseits belohnt. <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />