Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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 ;)

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige