Nach Spaltenvergleich Text in neues Sheet File sch
20.11.2013 13:13:51
Tom
Steh grad vor einem etwas (meiner Ansicht nach) komplexeren Problem:
Ich möchte 2 Spalten Vergleichen (ungefähr 100 Zeilen lang).
Spalte A | Spalte B
======================
STD | SON1
STD | SON1
STD | SON2
STD | SON1
ANGE | SON2
FREI | FREI
LGST | LGST
STD | SON1
VERB | SON3
LGST | LGST
LGST | LGST
LGST | LGST
STD | SON1
ANGE | FAMI
SON2 | SON2
SON5 | SON3
STD | STD
...
Wie hier zu sehen ist, kommen manche werte doppelt und/oder dreifach vor: dies gilt es einzuschränken und zwar:
Ich schau mir Spalte A an und pick mir den ersten Wert (STD) heraus, wenn dieser noch nicht in der Spalte vorgekommen ist, dann schreib ich ihn mir in das 3. Sheet rein + dem Inhalt aus Spalte B (SON1)!
Beim 2. Eintrag finde ich wieder den gleichen Eintrag (STD) + in Spalte B (SON1) den selben wie vorher => nichts zu tun, überspringen.
Beim 3. Eintrag finde ich zwar wieder (STD) jedoch einen anderen Wert in Spalte B (SON2) => diesmal müssen beide Einträge in das Sheet 3 geschrieben werden.
d.h. es muss immer parallel auf beide Spalten geschaut werden, ob schon mal beide in der Konstellation gprüft wurden, falls ja ist nichts zu tun; falls nein müssen beide einträge ins sheet3 kopiert werden...
ich hab das so gelöst kapt (ausgehend von der Spalte B):
Private Sub vergleiche()
Dim LoLetzte As Long
DIM kzSON AS String
DIM kzSTD AS String
LoLetzte = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
With ActiveSheet
For lngZaehler = 2 To LoLetzte
If (Cells(lngZaehler, 1) = "STD") And kzgSTD = 0 Then
kzgSTD = kzgSTD + 1
auslagerungGebuehrengruppe (lngZaehler)
End If
If (Cells(lngZaehler, 1) = "SON1") And kzgSON = 0 Then
kzgSON = kzgSON + 1
auslagerungGebuehrengruppe (lngZaehler)
End If
Next lngZaehler
End With
End Sub
private auslagerungsGebuehrengruppe(lngZaehler As Integer)Dim helper_produkt(300) As String
Worksheets("Tabelle3").Cells(lngZaehler + 1, 1) = "SELECT "
Worksheets("Tabelle3").Cells(lngZaehler + 1, 2) = " 'CODE: ' !!"
helper_produkt(lngZaehler - 2) = "'" & RTrim(Cells(lngZaehler, 1)) & "'"
Worksheets("Tabelle3").Cells(lngZaehler + 1, 3) = " " & helper_produkt(lngZaehler - 2)
Worksheets("Tabelle3").Cells(lngZaehler + 1, 4) = " ' NICHT IN SVZ ' !! "
...
Worksheets("Tabelle3").Cells(lngZaehler + 1, 5) = "SELECT "
Worksheets("Tabelle3").Cells(lngZaehler + 1, 6) = " 'CODE: ' !!"
helper_produkt(lngZaehler - 2) = "'" & RTrim(Cells(lngZaehler, 2)) & "'"
Worksheets("Tabelle3").Cells(lngZaehler + 1, 7) = " " & helper_produkt(lngZaehler - 2)
Worksheets("Tabelle3").Cells(lngZaehler + 1, 8) = " ' NICHT IN SVZ ' !! "
End Sub Als Output steht dann im Sheet 3 (1. Eintrag):
SELECT 'CODE: ' !! 'STD' !!' NICHT IN SVZ ' !! SELECT 'CODE: ' !! 'SON1' !!' NICHT IN SVZ ' !!
Leider ist meine Logik ein wenig falsch, denn ich prüf nicht parallell beide Spalten, sondern geh von der 2. Spalte fix aus u prüf die mit der 1. ab.
Hat wer eine Idee so etwas zu lösen?!
lg