関数でリストに重複があるか判定する方法!
リストの中に重複が含まれているか判定したい場合、
・SUMPURODUCT
・COUNTIIF
を使用し、下記の計算式で判定することができます。
=SUMPRODUCT(COUNTIF(データ、データ)- 1 )> 0
数式の説明
COUNTIFは検索条件と一致するセルの数を数えることができる関数で、
COUNTIF(検索範囲,検索条件)
と記載します。
通常は、検索条件は一つの数字や、文字を指定すると思いますが、
この検索条件を配列で指定することも可能で、
COUNTIF(検索範囲,["A","B","C"])
とすると、
[セルの値のがAの数、セルの値のがBの数、セルの値のがCの数]
という結果が配列で返されます。
ここで、条件を検索範囲と等しくした場合、
COUNTIF(検索範囲、検索範囲)
[1,1,2,1,3,3,3,2] 重複がない場合は1、そうでない場合は2以上
の配列が返されます。さらに
COUNTIF(検索範囲、検索範囲)-1 とすることで、
[0,0,1,0,2,2,2,1] 重複がない場合は0、そうでない場合は1以上
という配列を得ることができます。
この配列をSUMPRODUCTと組み合わせて計算すると、
重複のない場合は、
[0,0,0,0,0,0,0…]
を計算することになるので、結果は0に。
リストに重複が含まれる場合は常に、
SUMPRODUCTによって合計された配列に少なくとも1つの1があるため、
重複がある場合は、値が残り、計算結果が0以上になりますので、
リストに重複があることが判断できます。
空白セルがある場合
データの中に空白セルがある場合、
COUNTIF(検索範囲、検索範囲)-1
の計算結果に[-1]が含まれてくるため、計算結果がうまく表示されなくなります。
※COUNTIFの結果が0になるため
ですので、空白セルがある可能性がデータの場合は、
空白セルの時に0が返るように、(データ<>"")をかけ合わせた、下記の式をご使用ください。
=SUMPRODUCT((COUNTIF(データ、データ)- 1 )*(データ<>""))> 0
コメント欄