有馬総一郎のブログ

(彼氏の事情)

Excel COUNTIF関数の制限

エクセルでたまに1行を1レコードとして、キーとなる列の値が重複していないか調べたいことがある。

まあ、そんな時はキー列を連結させた結合キー列みたいのを作っておき、

結合キー列K1=キー列A1&キー列B1&キー列C1

重複レコード数=COUNTIF(結合キー列範囲K1:K100,結合キー列K1)

みたいな感じで探すのだが、ある時、そのカウント数がおかしな結果を出す時があった。

調べてみると、同じ桁の数値同士で、上位15桁が同じであると、下位の数値が異なっていようと同じ数値としてカウントされてしまうのだった。(画像はOffice2010だが、2013でも同様の現象を確認した)

16桁

ただ、回避策があって SUMPRODUCT関数を使ってSUMPRODUCT((結合キー列範囲K1:K100=結合キー列K1)*1)とすれば、正しくカウントされる。複数列を条件として集計できるので、 COUNTIF関数や VLOOKUP関数を使うより、 SUMPRODUCT関数を使うほうが良いのかもしれない。

ちなみに COUNTIF関数の他のパターンでの動きも確認してみた。

15桁以下であれば、正しくカウントされる
15桁

桁違いの場合は、正しくカウントされる
ケタ違いの数値

上位15桁が0の場合は、数値的にはないのと同じなので正しくカウントされる
ゼロが頭

逆に桁違いであっても全てが0の場合は、同様に数値としては同じなので、重複とみなされる
ゼロのケタ違い

文字列の場合は、正しくカウントされる
文字列

また、LibreOffice(試してないが恐らくOpenOfficeも)は、正しくカウントされる
LibreOffice

[cate: windows ] [tags: Office, Windows ]

« mediatombに変わる新たなDLNAサーバーminidlnaを導入 あのブロバイダーから乗り換える »

Comments