VBAで同じ値のセルがいくつあるかを高速に数える

全セルを対象とする場合

シートに入力されているセルの中で、同じ値が設定されているものがいくつあるのかを調べたい場合があります。

例えばA列に上から順にこのような値が設定されている場合に、「あああ」が3つ、「いいい」が2つ、ということが知りたい場合です。

列が固定されていればまだ目視でもなんとかなりそうですが、以下のようにシートのいろんな箇所にある場合は数えるのが大変です。

以下でシートの入力されているセルの同じ値がいくつあるのかを数えるコードを紹介します。

なお、以下のコードではDictionaryクラスを利用するため事前設定が必要です。

事前設定

以下のソースコードは連想配列のDictionaryクラスを利用しています。

VBA画面のツールメニュー→参照設定でMicrosoft Scripting Runtimeにチェックを付けておく必要があります。

コード

アクティブシートの入力セルを確認して、同じ値のセルの値と、そのセルの数を数えて新規シートに出力する関数です。

A列にセルの値、B列にそのセルの数を出力します。

UsedRangeプロパティを使ってシートの入力範囲のみを処理するため高速に動作します。

また、入力範囲内にある空白セルもカウント対象になります。

実行例

上のあああ、いいい、うううのシートをアクティブにして上の関数を実行すると以下のように新規シートに出力されます。

関連記事

サブコンテンツ

このページの先頭へ