Ich bin neu in VBA.Zählen Sie einzigartige Zellenwerte nach Farbe in Excel VBA
Endstate - Durchsuche einen Bereich und zähle Instanzen von eindeutigen Zellenwerten für eine vom Benutzer angegebene gefüllte Farbe, die zusammengeführte Zellen zählt (ich weiß, alles ruinieren) als eine ganze Zelle.
Ich habe den untenstehenden Code zusammengestellt, aber es funktioniert nicht ganz richtig, jede Hilfe wäre sehr willkommen!
Function CountUniqueColorBlocks(SearchRange As Range, ColorRange As Range) As Long
Dim cell As Range, blocks As Range
Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary
Set blocks = SearchRange(1).MergeArea(1) ' prime union method (which requires >1 value)
For Each cell In SearchRange
If cell.Interior.Color = ColorRange.Interior.Color And Not dict.Exists(cell.Value) Then
dict.Add cell.Value, 0
End If
Next
CountUniqueColorBlocks = dict.Count
End Function
Was erwarten Sie zu erhalten und was bekommen Sie eigentlich? – QHarr
Wenn ich den Code in Excel ausführen, bekomme ich eine Antwort, die +1 der tatsächlichen Anzahl ist, und ich bin mir nicht sicher warum. Außerdem habe ich mich gefragt, ob es eine effizientere Möglichkeit gibt, die Suche nach einem eindeutigen Wert auszuführen, als ein Skriptwörterbuch zu verwenden, ohne jedoch die Funktion auf numerische Werte zu beschränken. –
Der +1 ist aufgrund der verbundenen Zellen als leer behandelt, so dass die Leerzeichen einen neuen eindeutigen Wert und geben Ihnen ein Extra. Fügen Sie eine if-Anweisung hinzu, um 'Len (cell.value)> 0' zu überprüfen, um sicherzustellen, dass Sie Leerzeichen ignorieren. – tigeravatar