• 締切済み

Excel関数で範囲指定し重複以外の値のカウント

Excelの関数の使い方で教えていただけないかと思い、投稿しました。 お手数ですが、よろしくお願いします。 ある列の中で、限られた値の行を範囲として、別の列の値を調べて、カウントしたいと思っています。 カウントする値は、重複を除いた値の個数をカウントしたいと思います。 例えば、A列の1~100行までの範囲の中で、A列の101行目に入っている値である文字列の”鈴木”と同じ値がある行のB列の値をカウントしたいと思います。 そのB列のカウントを行う場合、重複する値があれば、1とカウントします。 以上の関数をB列の101行目に記載するとすれば、どのような関数になるのか教えていただければ幸いです。よろしくお願いいたします。

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

投稿後、返答がなかったので追加質問に気が付かず返信が遅くなり申し訳ありません。 データ範囲がA1:A100セルではなくF5:F629だったのですね。 その場合は5行目からスタートですのでMATCH関数の部分を以下のように変更する必要があります。 =COUNT(1/(MATCH(IF(F5:F629=F630,A5:A629,""),IF(F5:F629=F630,A5:A629),0)=ROW(5:629)-4)*1) 数式の意味は、F5:F629セルの中にF630セルと等しい場合はA列の値の配列を取得し、これを検索値としてMATCH関数で同じ配列(ただし該当しない行はFALSEが返ります)を計算すると、重複データではすべて最初の検索値の行(上から何番目か)が返ります(FALSEの行では#N/Aエラーが返ります)。 したがって2つ目以降の重複データはすべて最初の行がヒットしますので、その数字と行番号(から4引いたもの)が等しくなりません(最初の行部分のみTRUEが返ります)。 すなわち、F630セルが含まれている行では、A列の重複データも最初の日付の行がヒットし、F630セルが含まれていない行では"N/Aエラーの配列が取得されることになります。 これらの配列を1で割るとTRUEは1、FALSEは1/0でエラーとなり、もともとエラーのセルもエラーの配列となります。 この配列の数字をCOUNT関数でカウントすれば(COUNT関数はエラー値を無視する)、ご希望のデータの集計ができることになるわけです。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.4

この場をお借りして、[No.2]の MackyNo1 さんへ、 お見事! しかし、数式バー上で何度も範囲を選択し直してはF9キーを叩いたりして、何とか理解しようと試みていますが、まだ成功しておりません。 差し支えなければ、考え方のヒントだけで結構ですから、漏らしていただけないでしょうか?是非!

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

添付図を見易くするために、「A列の1~100行まで」を「A列の1~10行まで」に、「A列の101行目」を「A列の11行目」に、「B列の101行目」を「B列の11行目」に読み替えたことをご承知おきください。 C1: =IF(A1=A$11,B1,"") D1: =IF(A1=A$11,1/COUNTIF($C$1:$C$10,C1),"") B11: =SUM(D1:D10)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

A1:A100セルの中にA101セルの値と等しい行がある場合はそのB列の値の数を重複なくカウントしたいということなら、以下のような配列数式になります。 =COUNT(1/(MATCH(IF(A1:A100=A101,B1:B100,""),IF(A1:A100=A101,B1:B100),0)=ROW(1:100))*1) 配列数式ですので数式入力後、Ctrl+Shift+Enterで確定してください。

takenago
質問者

補足

すみません。私の聞き方が悪かったかもしれませんので、もう一度お聞きします。 F5~F629までに、それぞれ人の名前が入っています。 また、A5~A629には、それぞれ日付が入っています。 例えば、F630に”鈴木”さんというお名前の方がいて、F5~F629までの行の内、鈴木さんの名前がある行に対して、A5~A629の日付けをカウントしたいのですが、同じ日付がある場合は”1”とカウントしたいということです。 つまり、鈴木さんが何日出勤したのかをカウントするイメージです。 日付けは複数行で重複していますので、重複分は1日にカウントしたいということです。 その関数を、例えば、E630に設定したいと思います。 すみませんが、もう一度よろしくお願いいたします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 何をやりたいのかという事が、その説明では良く解りませんので、再度御説明願います。  もしこれが「A列の101行目に入っている値と同じ値が入っているセルが、A列の1~100行までの範囲の中で、何個あるのかをカウントする」という事なら解かるのですが、 「A列の1~100行までの範囲の中で、A列の101行目に入っている値である文字列の”鈴木”と同じ値がある行のB列の値をカウント」とは一体どういう意味なのでしょうか?  「A列の101行目に入っている値である文字列の”鈴木”と同じ値が入っているB列のセルが、A列の1~100行までの範囲の中に何個あるのかをカウントする」とういう意味なのでしょうか?  A列の1~100行までの範囲の中にはB列のセルは存在しませんから、質問者様の御質問は意味不明です。  

関連するQ&A