Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
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
Werte, die in liste 2 mal vorkommen ausblenden!
07.11.2008 18:23:00
adrian
Hi,
habe mir folgendes einfach überlegt, nur leider funktioniert es nicht ganz so wie ich will.
Möchte eigentlich nur Werte die in einer Liste 2mal vorkommen ausblenden!
Die ListBox bezieht Ihre Werte von 3 Sheets, wobei es vorkommen kann, das dadurch öfters mal die gleichen Werte angezeigt werden...
Hoffentlich kann mir jemand hierbei bald weiterhelfen...wäre toll!!
habe mir folgendes überlegt, jedoch mag es noch nicht so ganz klappen:

Private Sub ListBox1_GotFocus()
Dim Cell As Range
Dim i As Integer, a As Integer, anext As Integer
Dim V As String, Vnext As String
With Me.ListBox1
.Clear
For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
.AddItem Cell.Value
Next
For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
.AddItem Cell.Value
Next
For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
.AddItem Cell.Value
Next
End With
With ListBox1
i = 1
a = .ListIndex
While a 


lg
adrian

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
07.11.2008 19:49:16
Tino
Hallo,
wie wäre es hiermit, hier wird zuvor geprüft ob dieser Wert in der Liste vorkommt.
Option Explicit

Private Sub ListBox1_GotFocus()
Dim Cell As Range
Dim tempVar(), varFindIn
Dim lngInt As Long, i As Long

lngInt = Worksheets("Philips (A)").Range("SupplierAs").Cells.Count
lngInt = lngInt + Worksheets("Philips (EU)").Range("SupplierEU").Cells.Count
lngInt = lngInt + Worksheets("Philips (US)").Range("SupplierUS").Cells.Count

Redim tempVar(1 To lngInt, 0)
i = 1
  With Me.ListBox1
    .Clear
    For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
      If IsNumeric(Application.Match(Cell, tempVar)) = False Then
          tempVar(i, 0) = Cell
          .AddItem Cell.Value
               i = i + 1
      End If
    Next
    
    For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
      If IsNumeric(Application.Match(Cell, tempVar)) = False Then
          tempVar(i, 0) = Cell
          .AddItem Cell.Value
               i = i + 1
      End If
    Next
    
    For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
      If IsNumeric(Application.Match(Cell, tempVar)) = False Then
          tempVar(i, 0) = Cell
          .AddItem Cell.Value
               i = i + 1
      End If
    Next
  
  End With

End Sub


Gruß Tino

Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 11:08:00
adrian
vielen Dank Tino, leider funzt es noch nicht so ganz =/
ein wert kommt immer noch 2mal vor!
außerdem will Liste beim reinklicken nicht so bleiben wie ich mag....ändert immer ihr Format, obwohl ich das bei den properties auf false hab....help^^
eigentlich müsst es bei mir auch klappen, nur meckert er hier "V = a.Value" immer noch rum =/
der punkt vor dem a war sowieso zu viel =)
Wenn ich deinen Syntax richtig versteh zählst du mit "temVar" erst ma die gesamten Einträge durch und mit "If IsNumeric(Application.Match(Cell, tempVar)) = False Then" schaust du ob der Wert der gerade hinzuzufügenden Zelle schon mal hinzugefügt worden ist. Sehr genial =)
mit "tempVar" generiert VB automatisch eine Variable vom typ "gerade benötigt" (hier: char oder string) oder?!
lg
adrian
Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 12:31:00
fcs
Hallo Adrian,
hier eine Variante. Diese macht sich einen Fehler zunutzen, der Auftritt, wenn man einer Collection den gleichen Wert/Schlüsselwert nochmals hinzufügen möchte.
Gruß
Franz

Option Explicit
Private objCollection As Collection
Private Sub ListBox1_GotFocus()
Dim Cell As Range
On Error GoTo Fehler
Set objCollection = New Collection
With Me.ListBox1
.Clear
For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
If fncItemAddition(Zelle:=Cell) = True Then .AddItem Cell.Value
Next
For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
If fncItemAddition(Zelle:=Cell) = True Then .AddItem Cell.Value
Next
For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
If fncItemAddition(Zelle:=Cell) = True Then .AddItem Cell.Value
Next
End With
Fehler:
If Err.Number  0 Then
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
End If
End Sub
Private Function fncItemAddition(Zelle As Range) As Boolean
Dim strKey
Const strBlank = "XYZ999ZXY" 'Schlüsselwert für Leere Zellen in Liste
On Error GoTo Fehler
If IsEmpty(Zelle) Or Zelle.Value = "" Then
strKey = strBlank
ElseIf IsNumeric(Zelle) Then
strKey = CStr(Zelle)
Else
strKey = Zelle
End If
objCollection.Add Item:=Zelle.Value, key:=strKey
fncItemAddition = True
Fehler:
If Err.Number  0 Then
Select Case Err.Number
Case 457 'objCollection.Add ergibt Fehler, weil Schlüssel-Eintrag schon vorhanden
fncItemAddition = False
Case Else
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
fncItemAddition = False
End Select
End If
End Function


Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 14:17:00
adrian
jo, danke...auch eine tolle Lösung!
habe es aber mit Tinos Variante hinbekommen und auch den Code verstanden =)
trotzdem vielen Dank dir!!
werder versuchen auch deine nach zu vollziehen, weil sie auch sehr interessant ist!
lg
adrian
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 13:04:00
adrian
Hi,
also habe deinen Code soweit nachvollziehen können. Finde es echt gut und müsste auch komplett klappen. Leider spinnt er bei einem doppelt Vorkommenden Wert noch rum =(
Beispiel:
in 2 sheets stehen in den ranges "supplierAs" und "supplierEU" die gleichen Werte.....jeweils einmal TPV und TCL.
den Wert " TPV" nimmt er nur einmal rein wie es sein sollte, aber "TCL" steht noch 2mal in der Liste =(
ist doch zum Hamster melken!
Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 13:06:34
Tino
Hallo,
habe den Code etwas optimiert und noch einen Fehler in Matsch (Vergleich) Funktion behoben, zudem überspringe ich auch leere Zellen.
Bei mir werden keine doppelten Daten aufgelistet, eventuell wäre bei Deine doppelten Daten zu prüfen ob diese wirklich gleich sind.
Microsoft Excel Objekt Tabelle1
Option Explicit 
 
Private Sub ListBox1_GotFocus() 
Dim Cell As Range 
Dim tempVar() 
Dim lngInt As Long, i As Long 
 
lngInt = Worksheets("Philips (A)").Range("SupplierAs").Cells.Count 
lngInt = lngInt + Worksheets("Philips (EU)").Range("SupplierEU").Cells.Count 
lngInt = lngInt + Worksheets("Philips (US)").Range("SupplierUS").Cells.Count 
 
Redim tempVar(1 To lngInt, 0) 
i = 1 
  With Me.ListBox1 
    .Clear 
    For Each Cell In Worksheets("Philips (A)").Range("SupplierAs") 
     If Cell <> "" Then 
      If IsNumeric(Application.Match(Cell, tempVar, 0)) = False Then 
          tempVar(i, 0) = Cell 
          .AddItem Cell.Value 
               i = i + 1 
      End If 
     End If 
    Next 
     
    For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU") 
     If Cell <> "" Then 
      If IsNumeric(Application.Match(Cell, tempVar, 0)) = False Then 
          tempVar(i, 0) = Cell 
          .AddItem Cell.Value 
               i = i + 1 
      End If 
     End If 
    Next 
     
    For Each Cell In Worksheets("Philips (US)").Range("SupplierUS") 
     If Cell <> "" Then 
      If IsNumeric(Application.Match(Cell, tempVar, 0)) = False Then 
          tempVar(i, 0) = Cell 
          .AddItem Cell.Value 
               i = i + 1 
      End If 
     End If 
    Next 
   
  End With 
 
End Sub 
 


Gruß Tino

Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 13:14:03
Tino
Hallo,
sollte es immer noch nicht funktionieren, lade mal eine Beispieldatei mit Deinen Daten.
Gruß Tino
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 14:12:00
adrian
Jo super jetzt haut es hin =)
lag an "application.match(cell, tempVar, 0)"
warum eigentlich? die Vergleichsfunktion liefert hier anfangs sowieso immer "0", da in dem array tempVar keine Werte stehen und in den Zellen eigentlich immer ein Wert!
versteh das noch net ganz:
jetzt, falls "cell" und "tempVar" an der stelle (i) gleich sind, kann die Vergleichsfunkition immer noch nicht den Wert "1" liefern und somit IfNumeric auch nicht "true"
Oder was liefert die Vergleichsfinktion sonst....
oder ist es so, dass die Vergleichsfunktion den Wert 0 liefern soll falls die beiden Argumente nicht gleich sind!? =) bei gleich "1"
null ist keine Zahl und somit wäre alles klar!!!
Wäre schön, wenn du mir das noch kurz erläutern kannst =)
danke nochmals
adrian
Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 15:58:00
Tino
Hallo,
habe mal einige Kommentare in den Code geschrieben,
damit sollte es besser nachvollziehbar sein.
Option Explicit
 
Private Sub ListBox1_GotFocus()
Dim Cell As Range
Dim tempVar()
Dim lngInt As Long, i As Long
 
'Anzahl für größe der Area bestimmen 
lngInt = Worksheets("Philips (A)").Range("SupplierAs").Cells.Count
lngInt = lngInt + Worksheets("Philips (EU)").Range("SupplierEU").Cells.Count
lngInt = lngInt + Worksheets("Philips (US)").Range("SupplierUS").Cells.Count
'Area Dimensionieren 
Redim tempVar(1 To lngInt, 0)
'Index für Area auf eins setzen 
i = 1
  With Me.ListBox1
        'Listbox leeren 
    .Clear
        'Schleife über ersten Zellbereich 
    For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
        'prüfen ob Zelle leer ist 
     If Cell <> "" Then
        'Application.Match(Cell, tempVar, 0) 
        'wird der Wert in der Area gefunden, 
        'gibt diese Funktion einen numerischen Wert zurück, 
        'sonst einen Fehlerwert und dieser wäre somit nicht numerisch, 
        'Die 0 besagt, dass nach einer genauen Übereinstimmung gesucht werden soll 
        'siehe auch in Excel Hilfe unter der Funktion Vergleich 
      If IsNumeric(Application.Match(Cell, tempVar, 0)) = False Then
        'ist Wert nicht numerisch, ist der Wert noch nicht in der Area 
        'und wird somit in die Area aufgenommen 
          tempVar(i, 0) = Cell
        'Wert in die Listbox aufnehmen 
          .AddItem Cell.Value
        'Index für Area um eins erhöhen 
               i = i + 1
      End If
     End If
    Next
     
    For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
     If Cell <> "" Then
      If IsNumeric(Application.Match(Cell, tempVar, 0)) = False Then
          tempVar(i, 0) = Cell
          .AddItem Cell.Value
               i = i + 1
      End If
     End If
    Next
     
    For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
     If Cell <> "" Then
      If IsNumeric(Application.Match(Cell, tempVar, 0)) = False Then
          tempVar(i, 0) = Cell
          .AddItem Cell.Value
               i = i + 1
      End If
     End If
    Next
   
  End With
 
End Sub


Viel Spaß beim testen.
Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 16:05:00
adrian
jo, habs gerafft =)
also kann man sagen, dass die Vergleichsfunktion einen numerischen Wert liefert, falls eine genaue Übereinstimmung vorhanden ist und einen nicht-numerischen, falls nicht!
Wei?t du um welchen Wert es sich dabei handelt?
.....meist sind es ja "1" und "0"
lg
adrian
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 16:56:00
adrian
Hi Tino
noch etwas anderes, kannst du mir vll. sagen warum das nicht so ganz will:
neben den Werten, die in die Liste eingefügt werden stehen zugehörige Zahlenwerte:
Diese Zahlenwerte stehen aber nicht in einem Array "SupplierXY" sondern einfach nur daneben. (immer eine Zelle weiter links)
kann ich sie trotzdem folgendermaßen in einem ein textfeld addiert mit den anderen anzeigen lassen, wenn der Zugehörige Supplier in der Liste gerade ausgewählt ist:

Private Sub ListBox1_Change()
Dim Cell As Range, Vasia As Double, Veurope As Double, Vusa As Double, Vall As Double
With Me.TextBox1
For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
If IsNumeric(Application.Match(Cell, ListBox1.Select, 0)) = True Then
Vasia = Cell.Offset(0, -1).Value
End If
Next
For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
If IsNumeric(Application.Match(Cell, ListBox1.Select, 0)) = True Then
Veurope = Cell.Offset(0, -1).Value
End If
Next
For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
If IsNumeric(Application.Match(Cell, ListBox1.Select, 0)) = True Then
Vusa = Cell.Offset(0, -1).Value
End If
Next
Vall = Vasia + Vusa + Veurope
Range("D70") = Vall
TextBox1.Value = Range("D70").Value
End With
End Sub


Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 17:10:00
adrian
Waren noch ein paar Fehler drin, läuft aber immer noch nicht.
Denke es liegt daran, dass die Zahlenwerte nicht in dem Array "SupplierXY" stehen oder?!

Private Sub ListBox1_Change()
Dim Cell As Range
With Me.TextBox1
For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
If IsNumeric(Application.Match(Cell, ListBox1.Select, 0)) = True Then
Range("D72").Value = Cell.Offset(0, -1).Value
End If
Next
For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
If IsNumeric(Application.Match(Cell, ListBox1.Select, 0)) = True Then
Range("D73").Value = Cell.Offset(0, -1).Value
End If
Next
For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
If IsNumeric(Application.Match(Cell, ListBox1.Select, 0)) = True Then
Range("D74").Value = Cell.Offset(0, -1).Value
End If
Next
Range("D70").Value = Range("D72").Value + Range("D73").Value + Range("D74").Value
TextBox1.Value = Range("D70").Value
End With
End Sub


Anzeige
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 21:08:00
Tino
Hallo,
ohne dies zu testen, einfach aus dem Bauch raus würde ich dies so machen.
Sind die Zellbereiche sehr groß, würde ich dies über die Find Funktion lösen.
Private Sub ListBox1_Change()
Dim Cell As Range

  With Me.TextBox1
    For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
      If Cell = ListBox1 Then
        Range("D72").Value = Cell.Offset(0, -1).Value
      End If
    Next
    For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
      If Cell = ListBox1 Then
        Range("D73").Value = Cell.Offset(0, -1).Value
      End If
    Next
    For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
      If Cell = ListBox1 Then
        Range("D74").Value = Cell.Offset(0, -1).Value
      End If
    Next
    Range("D70").Value = Range("D72").Value + Range("D73").Value + Range("D74").Value
    TextBox1.Value = Range("D70").Value
  End With

End Sub


Gruß Tino

AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 10:03:00
adrian
Hi,
es funktioniert zwar, aber wenn ich in der Liste ein Wert anklicke und ohne aus der zelle zu gehen nach unten scrolle stürzt excel ab =/
sehr komisch!
die Zellen sind zwar nicht sehr groß, aber vll. ist die Find-Funktion doch eleganter...
nur kenne ich diese nicht^^
lg
adrian
AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 10:46:00
Tino
Hallo,
so sollte es mit der Find Funktion funktionieren, hab dies jetzt nicht getestet.
Private Sub ListBox1_Change()
Dim SZelle As Range
    
      Set SZelle = Worksheets("Philips (A)").Range("SupplierAs").Find(ListBox1, , xlValues, 1, 1, 1, False, False)
      If Not SZelle Is Nothing And ListBox1 <> "" Then
       Range("D72") = SZelle
       MsgBox SZelle.Address
      End If
        Set SZelle = Nothing
    
      Set SZelle = Worksheets("Philips (EU)").Range("SupplierEU").Find(ListBox1, , xlValues, 1)
      If Not SZelle Is Nothing And ListBox1 <> "" Then
        Range("D73") = SZelle
      End If
        Set SZelle = Nothing
      
      Set SZelle = Worksheets("Philips (US)").Range("SupplierUS").Find(ListBox1, , xlValues, 1)
      If Not SZelle Is Nothing And ListBox1 <> "" Then
       Range("D74") = SZelle
      End If
        Set SZelle = Nothing
        
    Range("D70").Value = Range("D72").Value + Range("D73").Value + Range("D74").Value
    
    TextBox1.Value = Range("D70").Value


End Sub


Gruß Tino

AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 10:55:07
adrian
Hi,
so ganz funktioniert es leider doch nicht!
der zugehörige Zahlenwert des letzten Werts in der Liste wird immer dazuaddiert.....
lg
adrian
AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 11:10:00
Tino
Hallo,
verstehe jetzt nicht ganz, die Addition war doch die Vorgabe die Du gegeben hast?
Was soll den mit den Werten geschehen?
Addieren?
Range("D70").Value = Range("D72").Value + Range("D73").Value + Range("D74").Value
Text zusammen führen?
Range("D70").Value = Range("D72").Value & Range("D73").Value & Range("D74").Value
Gruß Tino
AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 11:35:14
adrian
hi,
ja sollen schon addiert werden, jedoch werden werte von einem in der liste nicht angeklickem supplier zu denen , eines gerade ausgewählten addiert!
konkretes Beispiel:
sheet: Philips (A)
Supplier: TCL
Zahlenwert: 0 (bei allen rechts neben supplierfeld)
Supplier: TPV
Zahlenwert: 300
sheet: Philips (EU)
Supplier: TCL
Zahlenwert: 0
Supplier: TPV
Zahlenwert: 0
sheet: Philips (US)
Supplier: Funai
Zahlenwert: 0
Wenn ich jetzt auf TPV in der liste klicke wird die korrekte addition von 300 im textfeld angegeben.
klicke ich auf TCL, der korrekte Zahlenwert 0.
wähle ich anstatt TCL sofort nach TPV, Funai hat dieser noch den Wert von TPV anstatt auch 0.
Bei TCL wird der korrekte Wert ermittel, bei Funai jedoch nicht...
AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 11:48:00
adrian
hi,
habe es so gelöst....oben eingebaut, bevor den ranges wieder werte zugewiesen werden.
With Me.TextBox1
Range("D72").Clear
Range("D73").Clear
Range("D74").Clear
....nachfolgender code
nicht sehr elegant, aber funktioniert =)
lg
adrian
AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 17:59:21
Tino
Hallo,
besser wäre es so, damit auch eventuelle Zellformatierungen erhalten bleiben.
Range("D72:D74").ClearContents
Stellt sich mir die Frage, brauchst Du überhaupt diese Zellen?
Eventuell kannst Du auch anstatt mehrer Zellen eine Variable verwenden.
Option Explicit
Private Sub ListBox1_Change()
Dim Cell As Range, dblWert As Double

  With Me.TextBox1
    For Each Cell In Worksheets("Philips (A)").Range("SupplierAs")
      If Cell = ListBox1 Then
        dblWert = Cell.Offset(0, -1).Value
      End If
    Next
    For Each Cell In Worksheets("Philips (EU)").Range("SupplierEU")
      If Cell = ListBox1 Then
        dblWert = dblWert + Cell.Offset(0, -1).Value
      End If
    Next
    For Each Cell In Worksheets("Philips (US)").Range("SupplierUS")
      If Cell = ListBox1 Then
        dblWert = dblWert + Cell.Offset(0, -1).Value
      End If
    Next
 'hier wird der Wert nochmals auf zwei Stellen nach dem Komma gerundet 
 'nicht gewünscht, einfach diese Zeile löschen 
 dblWert = Application.WorksheetFunction.Round(dblWert, 2)
    TextBox1.Value = dblWert
  End With

End Sub


Ist natürlich nur ein Vorschlag.
Gruß Tino

AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 20:58:52
Tino
Hallo,
wird ein Wert in der Area gefunden gibt die Match Funktion die Zeilennummer der Position zurück, wird dieser nicht gefunden wird ein Fehler zurückgegeben.
Gruß Tino
AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 09:46:43
adrian
Vielen Dank für deine Mühe =)
versteh es jetzt endlich!
lg
adrian
AW: Werte, die in liste 2 mal vorkommen ausblenden!
10.11.2008 21:16:03
Daniel
Hi
versuch mal folgende, einfache lösung:
anstelle von

.AddItem Cell.Value


schreibst du diesen kleinen 4-Zeiler und es sollten keine doppelten Einträge mehr vorkommen


For i = 0 To .ListCount - 1
If .List(i) = Cell.Text Then Exit For
Next
If i = .ListCount Then .AddItem Cell.Text


Gruß, Daniel

AW: Werte, die in liste 2 mal vorkommen ausblenden!
11.11.2008 09:45:48
adrian
Danke, das ist natürlich ach sehr genial =)
lg
adrian
AW: noch einfacher gehts
11.11.2008 00:12:00
Daniel
wenn man Excel die Arbeit machen lässt und folgendermassen vorgeht:
- Daten der 3 bereiche an eine freie Stelle untereinander kopieren (z.B. in die letzte Spalte)
- diese Spalte nochmal mit dem Spezialfilter ohne Duplikate in eine freie Spalte kopieren.
- dies Spalte bei bedarf sortieren und direkt in die Listbox einlesen.
das geht sehr einfach und sehr schnell, da schleifenfrei.
die Einzige bedingung ist, daß es in summe nicht mehr als 65536 (bis Excel 11) Zeilen sein dürfen, aber bei so vielen daten macht ne Listbox keinen Sinn.
weiterer Vorteil, man kann Excel auch gleich sortieren lassen.
das sieht als Code dann so aus (hier jetzt mal beispielhaft, das musst du für dich noch anpassen)

Private Sub ListBox1_GotFocus()
ListBox1.Clear
Range("AAA").Copy Cells(Rows.Count, Columns.Count).End(xlUp).Offset(1, 0)
Range("BBB").Copy Cells(Rows.Count, Columns.Count).End(xlUp).Offset(1, 0)
Range("BBB").Copy Cells(Rows.Count, Columns.Count).End(xlUp).Offset(1, 0)
With Cells(1, Columns.Count)
.Value = "Überschrift"
.CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Cells.Offset(0, -1),  _
Unique:=True
.EntireColumn.Delete
End With
With Range(Cells(2, Columns.Count - 1), Cells(Rows.Count, Columns.Count - 1).End(xlUp))
.Sort key1:=.Cells(1, 1), order1:=xlAscending, header:=xlNo
ListBox1.List = .Cells.Value
.EntireColumn.Delete
End With
End Sub


Gruß, Daniel

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige