2016-04-04 26 views
-1

Ich habe eine VBA-Sammlung, die mehrere Dateielemente enthält (Ich habe ein Klassenmodul namens Datei mit mehreren Eigenschaften erstellt). Ich war neugierig, ob es einen Weg gibt, eine For Schleife zu verwenden, um alle Elemente in der Sammlung iterieren und zwei Dinge tun:Zählen von eindeutigen Werten in einer VBA-Sammlung

  1. eine Liste aller Unikaten Holen Sie sich auf einer Datei-Eigenschaft basiert, die ich
  2. angeben
  3. Zählen Sie die Anzahl der Elemente, die jeden eindeutigen Wert aus der obigen Liste

Zum Beispiel passen, lassen Sie uns sagen, dass ich in meiner Sammlung 4 Datei Hand haben:

  • File1 (File1.Pattern = "Test * .xlsx")
  • File2 (File2.Pattern = "Test * .xlsx")
  • File3 (File3.Pattern = "Test * .txt")
  • Datei4 (File4.Pattern = „Test * .csv ")

Der Ausgang (idealerweise ein Array oder getrennte Sammlung) wäre ich möchte:

  • Test * .xlsx (2)
  • Test * .txt (1)
  • Test * .csv (1)

Irgendwelche Gedanken darüber, wie ich so etwas implementieren könnte?

+0

Variablen deklarieren für jedes Muster sie dann für jedes Spiel durch die Schleife erhöhen? – findwindow

+0

Was, wenn Sie nicht im Voraus wissen, welche Muster @findwindow sind? – GSerg

+0

Was @GSerg sagte. Es kann unendlich viele Muster geben. –

Antwort

3

Solange Sie dies nicht auf einem Mac tun müssen:

Dim d, f, k 
Set d = CreateObject("scripting.dictionary") 

For Each f in myFiles 
    d(f.Pattern) = d(f.Pattern)+1 
Next f 

For Each k in d 
    Debug.Print k, d(k) 
Next k 
+0

Vielen Dank Tim. –

Verwandte Themen