別ファイルにある値の件数を「重複は除外しカウント」する
「重複を除いてカウント」にするにはSUMPRODUCT関数+COUNTIF関数でできる、と前のページで説明しました。
しかし、参照元の値が別のブック(ファイル)にある場合にはこの方法はエラーになってしまいます。
そこでここでは、別ブック上にあるデータを「重複を除いてカウントする方法」を説明します。
1.まずはやりたいことを確認
始めに、やりたいことを例を含めて確認します。
1-1.別ファイルの値を重複を除いてカウントしたい
やりたいことは、「別ファイルの値を重複を除いてカウントする」です。
前のページでは「同じファイルにある値を重複を除いてカウントする数式」を紹介しましたが、別ファイルで同じことをしようとするとエラーになってしまうことがあります。
そこでここでは、エラーにならない数式を紹介します。
1-2.例を確認
ひとつ例を見てみましょう。
上の表は、Book1にある品名の一覧です。「レモン」、「りんご」、「ねぎ」という品名が3種類、全部で7つ表示されています。
上はBook2のシートです。つまり、品名の載ったシートとこのシートは、ファイルが別ということです。
そして、このBook2のセルA1に「Book1の一覧に何種類の品名があるか?」を表示させたいとします。
この時、前のページでIF関数の含む条件は次の数式でできると説明しました。
=SUMPRODUCT(1/COUNTIF(「範囲」,「範囲」))
しかし結果は「#VALUE!エラー」になってしまいました。
このような状態が「他のファイル(例ではBook1)のデータ(例ではセルB2からB8)を重複を除いてカウントする」です。
2.数式の紹介と作り方の説明
では、他のファイルにある値にIF関数で含む条件にできる数式を紹介し、作り方を解説します。
2-1.数式の紹介
他ブック上にデータがある時、COUNTIF関数では#VALUE!エラーになってしまいます。原因は「COUNTIF関数が閉じたファイルの中身を見られないから」です。
ですから、この場合には別の関数を使えばいいのです。
使うのは「SUM関数とROUNDDOWN関数、MATCH関数とROW関数の組み合わせ」です。
具体的に、数式の形は次のようになります。
{=SUM(ROUNDDOWN((MATCH(① カウントしたい範囲&"",① カウントしたい範囲&"",)/ROW(② ①と同じ1行目からの行範囲)),0))}
2-2.数式の作り方
では、先ほどの例の条件で数式を作ってみます。条件は「Book1にある品名の一覧から重複を除いてカウントする」です。
(1)結果を表示させたいセルをクリックし、「=SUM(ROUNDDOWN((MATCH(」と入力後、fxボタンを押す
(2)MATCH関数の引数 検索値にカーソルをあて、カウントしたいBookの範囲をなぞって選択、その後「&""」を入力する
(3)MATCH関数の引数 範囲に検査値の値をコピーして貼り付ける
(4)数式バーに「,)/ROW(」と入力する
(5)結果を表示させたいシートのセルA1から、カウントしたい範囲(①)の行数と同じになる範囲までを入力後、「)),0))」と入力する
※ ①が2~8行目の範囲なら7行なのでA1:A7となる
(6)Shift+Ctrl+Enterキーを押せば完了
例では、数式は次のようになります。
{=SUM(ROUNDDOWN((MATCH([Book1.xlsx]Sheet1!$B$2:$B$8&"",[Book1.xlsx]Sheet1!$B$2:$B$8&"",)/ROW(A1:A7)),0))}
このように「SUM関数とROUNDDOWN関数、MATCH関数とROW関数の組み合わせ」を使えば、重複を除いてカウントすることができます。
以上、参考になれば幸いです。
【口コミ・評判のいいExcel本の紹介】