VBAを初めて使用しました。Excelでの固有のセル値の計算VBA
Endstateは - の範囲を検索し、ユーザー指定の満たされた色は1つのセル全体として(遺跡すべてをマージし、私が知っている)マージされたセルをカウントするためのユニークなセル値のインスタンスをカウントします。
が、私は以下のコードをコンパイルしたが、それは非常に適切で働いていない、任意の助けをいただければ幸いです!
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
あなたが得るために何を期待しているし、あなたが実際に何を得ていますか? – QHarr
Excelでコードを実行すると、実際のカウント+1の答えが得られます。理由はわかりません。また、スクリプトディクショナリを使用する以外にも、一意の値の検索を効率的に実行する方法があるのだろうかと思っていましたが、関数を数値のみに限定することはありません。 –
+1は、マージされたセルが空白として処理されるためです。したがって、ブランクは新しい一意の値であり、余分なものを与えます。ブランクを無視するために 'Len(cell.value)> 0'をチェックするif文を追加してください。 – tigeravatar