Microsoft Excel

Herbers Excel/VBA-Archiv

liste ohne dublikate/dynamisch? | Herbers Excel-Forum


Betrifft: liste ohne dublikate/dynamisch? von: Helge Kuehn
Geschrieben am: 05.01.2010 10:14:30

Hallo nochmal,
heute geht wirklich echt wenig. Sorry ... Ich hab zwei Arbeitsblaetter: "Mainlist" und "Inventory report", in der mainliste stehen Materialnummern (ab D4) mit einer Anzahl (ab K4). Nun moechte ich die Materialnummern in dem Inventory report (ab A4) kopieren, ohne das die Mat-nr dort doppelt aufgefuehrt werden (liste ohne dublikate). Spaeter will ich mit summewenn die Anzahl in dem inventoryreport anzeigen. Mit dem Spezialfilter geht das, leider ist der nicht dynamisch. In die Main kommen taglich neue Artikel (oder auch vorhanden) hinzu. Hat dafuer jmd eine Loesung? Hab schon einiges versucht, bekomme aber nicht das richtige Resultat.

  

Betrifft: Sverweis .. Liste ohne Duplikate/dynamisch? von: Mike
Geschrieben am: 05.01.2010 10:18:26


Hey Helge,

solche Listen vergleich ich jeweils mittels Sverweis() und zwar in beiden Listen.
So geht schnell hervor, was noch ergänzt werden muss, ist jedoch nur "halb dynamisch".

Gruss
Mike


  

Betrifft: AW: Sverweis .. Liste ohne Duplikate/dynamisch? von: Helge Kuehn
Geschrieben am: 05.01.2010 10:31:31

Hi,
hab ich mir auch schon ueberlegt, aber geht es meiner Meinung nach nicht. Ich moechte es ja so haben, wenn neues Mat rein kommt, dass sich die Inventory list automatisch aktuallisiert. (ohne das ich etwas in die Inventory list eintrage !)
So soll es in etwa spaeter aussehen.
WS Mainlist WS Inventory list
Mat nr QTY Mat nr Total QTY
11111 1 11111 6
11111 2 11112 4
11111 3 11113 5
11112 4 11114 6
11113 5 11115 7
11114 6 11116 17
11115 7
11116 8
11116 9


  

Betrifft: AW: Sverweis .. Liste ohne Duplikate/dynamisch? von: Helge Kuehn
Geschrieben am: 05.01.2010 11:33:14



Sub tt()
  Dim oD As Object, rngC As Range
  Set oD = CreateObject("Scripting.Dictionary")
  With Sheets(1) 'erste Tab lesen
    For Each rngC In .Range(.Cells(4, 1), .Cells(Rows.Count, 4).End(xlUp))
      If Not oD.exists(rngC.Value) Then
        oD.Add rngC.Value, rngC.Value
      End If
    Next
  End With
  'Daten eintragen
  Sheets(2).Cells(4, 1).Resize(oD.Count) = WorksheetFunction.Transpose(oD.keys)
End Sub

Also ich will das Makro verwenden. Funktioniert soweit, aber ich moechte, das nur die werte aus Spalte D des ersten sheets kopiert werden. wo ist der Fehler ?


  

Betrifft: AW: Sverweis .. Liste ohne Duplikate/dynamisch? von: Helge Kuehn
Geschrieben am: 05.01.2010 11:48:58


Sub tt()
  Dim oD As Object, rngC As Range
  Set oD = CreateObject("Scripting.Dictionary")
  With Sheets(1) 'erste Tab lesen
    For Each rngC In .Range(.Cells(4), .Cells(Rows.Count, 4).End(xlUp))
      If Not oD.exists(rngC.Value) Then
        oD.Add rngC.Value, rngC.Value
      End If
    Next
  End With
  'Daten eintragen
  Sheets(2).Cells(1).Resize(oD.Count) = WorksheetFunction.Transpose(oD.keys)
End Sub

Das ist die loesung ... habs doch noch hin bekommen.