エクセルでたまに1行を1レコードとして、キーとなる列の値が重複していないか調べたいことがある。
まあ、そんな時はキー列を連結させた結合キー列みたいのを作っておき、
結合キー列K1=キー列A1&キー列B1&キー列C1
重複レコード数=COUNTIF(結合キー列範囲K1:K100,結合キー列K1)
みたいな感じで探すのだが、ある時、そのカウント数がおかしな結果を出す時があった。
調べてみると、同じ桁の数値同士で、上位15桁が同じであると、下位の数値が異なっていようと同じ数値としてカウントされてしまうのだった。(画像はOffice2010だが、2013でも同様の現象を確認した)
ただ、回避策があって SUMPRODUCT関数を使ってSUMPRODUCT((結合キー列範囲K1:K100=結合キー列K1)*1)
とすれば、正しくカウントされる。複数列を条件として集計できるので、 COUNTIF関数や VLOOKUP関数を使うより、 SUMPRODUCT関数を使うほうが良いのかもしれない。
ちなみに COUNTIF関数の他のパターンでの動きも確認してみた。
上位15桁が0の場合は、数値的にはないのと同じなので正しくカウントされる