Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
616to620
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
616to620
616to620
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Gefilterte Daten im Listenfeld ausgeben

Gefilterte Daten im Listenfeld ausgeben
02.06.2005 14:39:45
fiedler
Ich hoffe hier kann mir jemand helfen.
Ich habe eine Exceltabelle in der Artikel hinterlegt sind. In Spalte A stehen unterschiedlich Buchstaben-Zahlen-Kombination, die unterschiedlich oft vorkommen.
Mein Ziel ist es über ein TextBox Feld einen solchen Suchbegriff einzugeben. In einen Listenfeld sollen nun alle Zeilen ausgegeben werden in den Spalte A mit dem Suchbegriff übereinstimmen. Es sollen auch nicht alle Spalten im Listenfeld angezeigt werden. Es geht eigentlich auch nur um die Spalten A;D;E und F.
Hoffe ich habe mich deutlich ausgedrückt.
Gruß Paul

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gefilterte Daten im Listenfeld ausgeben
02.06.2005 15:51:15
GraFri
Hallo
Soll das ganze in einer Userform oder direkt auf dem Tabellenblatt sein?
Soll man auch den Suchbegriff mittels einer Listbox auswählen können (alle
Begriffe ohne Duplikate der Spalte A)?
mfg, GraFri
AW: Gefilterte Daten im Listenfeld ausgeben
02.06.2005 16:04:09
paul
Die Ausgabe soll in einer UserForm erfolgen.
Bei der Eingabe bin ich mir noch nicht sicher ob Sie über eine Textbox erfolgt oder ob ich eine Combobox mit den entsprechenden Werten Initialisiere. Aber wenn Variante B dann ohne Duplikate.
paul
AW: Gefilterte Daten im Listenfeld ausgeben
02.06.2005 16:58:43
GraFri
Hallo
Hier der Code. 2 Listboxen 'lisSuche' und 'lisAnzeige' und ein Commandbutton 'cmdAnzeige', der die Suche startet. Fehlerroutinen könnten noch eingebaut werden.


      
'******************************************************************************
'In Dekleration Userform

Option Explicit
Private Sub UserForm_Initialize()
' Daten für die Listbox lisSuche'
    Call Modul1.EntferneDuplikate("A1:A105")
    lisSuche.List = suchDaten
End Sub
' mit dem CommandButton 'cmdAnzeige' werden die Suchdaten angezeigt
Private Sub cmdAnzeige_Click()
Dim x&
    
    x = 0
    
For n = von To bis
      
If Cells(n, 1).Value = lisSuche.Text Then
          
ReDim Preserve listDaten(0 To 3, 0 To x)
          listDaten(0, x) = lisSuche.Text
          listDaten(1, x) = Cells(n, 4).Value
          listDaten(2, x) = Cells(n, 5).Value
          listDaten(3, x) = Cells(n, 6).Value
          x = x + 1
      
End If
    
Next n
    lisAnzeige.Clear
    lisAnzeige.Column = listDaten
End Sub
'******************************************************************************

'******************************************************************************
'In ein Modul

Option Explicit
Public suchDaten()      'Daten, die in der Listbox 'lisSuche' angezeigt werden
Public listDaten()      'Daten, die in der Listbox 'lisAnzeige' angezeigt werden
Public n&
Public von&, bis&       'Anfangs- und Endzeie des Bereiches
Dim AnzAlle As Long, AnzOhneDupl As Long
Sub EntferneDuplikate(Adresse As String)
Dim AlleZellen As Range, Zelle As Range
Dim OhneDupl As New Collection
Dim i As Long, j As Long
Dim Swap1, Swap2, Item
    
' Daten stehen im Bereich 'Adresse'
    Set AlleZellen = Range(Adresse)
    
' Anfangs- und Endzeie des Bereiches
    von = AlleZellen.Row
    bis = von + AlleZellen.Count - 1
    
' Der nächste Abschnitt ignoriert den Fehler, der entsteht, wenn
' versucht wird, ein Duplikat in die Collection zu schreiben. Das
' Duplikat wird nicht geschrieben - das was wir wollen.
    On Error Resume Next
    
For Each Zelle In AlleZellen
        OhneDupl.Add Zelle.Value, 
CStr(Zelle.Value)
'       Beachte: das 2te Argument für die Add Methode muß ein String sein
    Next Zelle
' Normale Fehlerbehandlung
    On Error GoTo 0
' Anzahl aller Daten und Daten ohne Duplikate
    AnzAlle = AlleZellen.Count
    AnzOhneDupl = OhneDupl.Count
    
' Sortieren der Collection (optional)
    For i = 1 To OhneDupl.Count - 1
        
For j = i + 1 To OhneDupl.Count
            
If OhneDupl(i) > OhneDupl(j) Then
                Swap1 = OhneDupl(i)
                Swap2 = OhneDupl(j)
                OhneDupl.Add Swap1, before:=j
                OhneDupl.Add Swap2, before:=i
                OhneDupl.Remove i + 1
                OhneDupl.Remove j + 1
            
End If
        
Next j
    
Next i
    
' Die sortierten Daten (ohne Duplikate) in das DatenArray
    ReDim suchDaten(0 To AnzOhneDupl - 1) ' Dimensionieren
    
    
For n = 0 To UBound(suchDaten)
        suchDaten(n) = OhneDupl.Item(n + 1)
    
Next n
    
' Die sortierten Daten direkt (ohne Duplikate) in die ListBox
'    For Each Item In OhneDupl
'        UserForm1.lisSuche.AddItem Item
'    Next Item

End Sub
mfg, GraFri
Anzeige
AW: Gefilterte Daten im Listenfeld ausgeben
02.06.2005 17:05:58
paul
Ich bin begeistert. Ich komme zwar nicht vor Montag dazu das ganze in die Tat umzusetzen, aber ich danke dir für deine Mühe.
Ein sonniges Wochenende
Gruß Paul
AW: Gefilterte Daten im Listenfeld ausgeben
06.06.2005 10:16:48
paul
Hallöle,
habs gerade ausprobiert und es klappt. Ich weiß nicht warum, aber es klappt.
vielen Dank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige