Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nach Spaltenvergleich Text in neues Sheet File sch

Forumthread: Nach Spaltenvergleich Text in neues Sheet File sch

Nach Spaltenvergleich Text in neues Sheet File sch
20.11.2013 13:13:51
Tom
Hallo ExcelProfis :)
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

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Spaltenvergleich Text in neues Sheet File sch
20.11.2013 13:36:33
Rudi
Hallo,
teste mal:
Sub aaaa()
Dim rngC As Range, oDic As Object, arr(), o, i As Long
Set oDic = CreateObject("scripting.dictionary")
For Each rngC In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
oDic(rngC.Value & "_" & rngC.Offset(, 1).Value) = 0
Next
ReDim arr(1 To oDic.Count, 1 To 2)
For Each o In oDic
i = i + 1
arr(i, 1) = Split(o, "_")(0)
arr(i, 2) = Split(o, "_")(1)
Next
Sheets("Tabelle3").Cells(1, 1).Resize(i, 2) = arr
End Sub
Gruß
Rudi

Anzeige
AW: Nach Spaltenvergleich Text in neues Sheet File sch
22.11.2013 10:47:09
Tom
Hallo Rudi,
hab leider mich bei dem Bsp ein wenig vertan (falsch beschrieben):
Nehmen wir die Spalten A u. B her:
Wenn in der ersten Spalte schon der gleiche Wert in einer Zeile vorgekommen ist, dann soll dieser Wert NICHT in Sheet3 geschrieben werden, es kann aber durchaus vorkommen, dass der Wert in Spalte B(selbe Zeile nicht vorgekommen ist = dieser muss schon auch in Sheet 3 geschrieben werden!
Bsp:
Spalte A | Spalte B
Z1: STD | SON1
Z2: STD | SON3
Z3: SON1 | SON3
1) Beide Werte müssen in Sheet3 gespeichert werden (STD und SON1)
2) nur der Wert aus Spalte B in Sheet3 schreiben (SON3)
3) nur der Wert aus Spalte A in Sheet3 schreiben (SON1)
Danke
lg

Anzeige
AW: Nach Spaltenvergleich Text in neues Sheet File sch
22.11.2013 12:07:51
Tom
hat sich erledigt ;)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige