Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Unterschiedliche Einträge herausfiltern+auflisten

Betrifft: Unterschiedliche Einträge herausfiltern+auflisten von: Tommi
Geschrieben am: 14.07.2008 09:15:13

Liebe Excel-Gemeinde,

ich habe eine Tabelle mit einer Spalte A, in der in jeder Zelle verschiedene Einträge mit Komma getrennt stehen (z.B. A1: Hund, Katze, Maus; A2: Kuh, Vogel, Hamster; etc.). Kann man diese Spalte auslesen, sodass an anderer Stelle sämtliche unterschiedlichen Einträge, obwohl sie mehrfach und an verschiedenen Positionen innerhalb der Ausgangszellen vorkommen, in einer Liste untereinander stehen (jeder Eintrag eine Zelle; z.B. B1: Hund, B2: Katze, B3: Maus, B4: Hamster, B5: Vogel)? Ich habe bereits versucht, durch verschiedene Themen im Forum das Problem auf einem Umweg zu lösen (z.B. über Text in Spalten), bin aber leider der Lösung nicht näher gekommen.

Herzlichen Dank für Eure Hilfe und schöne Grüße
Tommi

  

Betrifft: Auflistung von: Backowe
Geschrieben am: 14.07.2008 09:45:03

Hallo Tommi,

so funktioniert es.

VBA-Code:
Sub Auflistung()
Dim Zelle As Range
Dim i As Long, j As Long
Dim Ergebnis As Variant
i = 1
For Each Zelle In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
  Ergebnis = Split(Zelle, ",")
  For j = 0 To UBound(Ergebnis)
    Cells(i, 2) = Trim(Ergebnis(j))
    i = i + 1
  Next
Next
End Sub

Code eingefügt mit Syntaxhighlighter 4.15



  

Betrifft: AW: Unterschiedliche Einträge herausfiltern+auflisten von: UweD
Geschrieben am: 14.07.2008 10:01:20

Hallo Tommi

diess Makro dürfte dein Problem lösen..





Option Explicit
Sub HundKatzeMaus()
    On Error GoTo Fehler
    Dim SP%, ZE&, LR1&, LR2&, TB1, TB2, i&, j%, A
    Set TB1 = Sheets("Tabelle1")
    Set TB2 = Sheets("Tabelle2")
    SP = 1 'Spalte A
    ZE = 1 'Zeile 1
    LR1 = TB1.Cells(Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
    Application.ScreenUpdating = False
    For i = ZE To LR1
        A = Split(TB1.Cells(i, SP), ", ")
        For j = 0 To UBound(A)
            If WorksheetFunction.CountIf(TB2.Columns(SP), A(j)) = 0 Then 'noch nicht enthalten
                LR2 = TB2.Cells(Rows.Count, SP).End(xlUp).Row + 1
                TB2.Cells(LR2, SP) = A(j)
            End If
        Next j
    Next i
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Code eingefügt mit Syntaxhighlighter 4.14



Gruß UweD


  

Betrifft: Funktioniert wunderbar von: Tommi
Geschrieben am: 14.07.2008 11:03:12

Hallo Uwe und Backowe,

herzlichen Dank für Eure Makros. Ich habe sie auf Buttons gelegt und weidlich ausprobiert. Bei Deinem Makro, lieber Backowe, werden alle Einträge ausgelesen, erscheinen aber mehrfach in der Liste. Das habe ich jedoch sicherlich unzulänglich beschrieben. Bei Deinem Makro, lieber Uwe, werden die Einträge ausgelesen und erscheinen auch nicht mehrfach. Das ist wirklich super.

Herzlichen Dank noch einmal für Eure Hilfe.
Tommi


 

Beiträge aus den Excel-Beispielen zum Thema "Unterschiedliche Einträge herausfiltern+auflisten"