- ベストアンサー
EXCEL関数について
- EXCEL関数についての質問です。EXCEL2003を使用しており、Sheet1のA列にはランダムに1〜10の数字が入力され、B列には1〜20の数字や「OK」「NG」が入力されています。Sheet2のA列には1〜10の数字が順に入力され、B列からW列には1〜20の数字や「OK」「NG」が入力されています。Sheet2のB2セルから始まる部分に、Sheet1で特定のグループがいくつ選択されているか、または特定のグループと特定の値がいくつ選択されているかを表す式を入れたいと考えています。
- この場合、SUMIF関数やCOUNTIF関数を使用することができます。例えば、Sheet2のB2セルには以下の式を入力することで、Sheet1のA列で「グループ1」が選択されている数を求めることができます。=COUNTIF(Sheet1!A2:A100, "グループ1")
- 同様に、C2セルには以下の式を入力することで、Sheet1のA列で「グループ1」が選択されておりかつB列で「2」が選択されている数を求めることができます。=COUNTIFS(Sheet1!A2:A100, "グループ1", Sheet1!B2:B100, "2")
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私も最初、 =SUMPRODUCT((Sheet1!$A$2:$A$100=$A2)*(Sheet1!$B$2:$B$100=B$1)) という数式を自力で作成して試した際に、#N/Aエラーが出たため、投稿する事を控えていたのですが、色々試行錯誤している内に、数式中のSheet2の$A2とB$1の部分を、一旦、1に変えて =SUMPRODUCT((Sheet1!$A$2:$A$100=1)*(Sheet1!$B$2:$B$100=1)) という数式にしてから、Sheet2のB2~W11の範囲に貼り付けた後、B2セルに入力した数式を再度 =SUMPRODUCT((Sheet1!$A$2:$A$100=$A2)*(Sheet1!$B$2:$B$100=B$1)) に入力し直してから、ドラッグ機能で他のセルにコピーした処、何故か正常にカウントする様になりました。 本来は、数式中の$A2とB$1の部分を、一旦、1に変えてから、再度元に戻す操作は、単なる二度手間であり、何の意味も無い操作の筈なのですから、何故それで正常にカウントする様になるのかは全く解りませんし、質問者様のパソコンで同じ操作を行ったからといって、エラーではなくなる保証もありませんが、駄目元で試してみられては如何でしょうか。 尚、どうしても駄目だった場合には、SUMPRODUCT関数を使用する方法と比べればスマートではありませんが、作業列を設けるという方法もあります。 今仮に、Sheet3のA列を作業列に使用するものとします。 まず、Sheet3のA2セルに次の数式を入力して下さい。 =Sheet!1$A2&"-"&Sheet!1$B2 次に、Sheet3のA2セルをコピーして、Sheet3のA3~A100の範囲に貼り付けて下さい。 そして、Sheet2のB2セルに次の数式を入力して下さい。 =COUNTIF(Sheet3!$A:$A,"="&$A2&"-"&B$1) 続いて、Sheet2のB2セルをコピーして、Sheet2のB2~W11の範囲に貼り付けて下さい。 以上の方法でも、同様にカウントする事が出来ます。
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート2のB2セルには次の式を入力し、W2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =SUMPRODUCT((Sheet1!$A$2:$A$1000=$A2)*(Sheet1!$B$2:$B$1000=B$1))
補足
早速のご回答有難うございます。 コピペさせて頂いたのですが、なぜか「#N/A」になります。 列、入力セル等間違いありません。 どうしてでしょうか・・・?
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
たとえばSheet2!B2には、「Sheet1!$A$1:$A$100が$A2に等しく、か つ、Sheet1!$B$1:$B$100がB$1に等しい」もののカウントが欲しいの ですね。複数条件なので、2003ではsumproductを使うのがセオリー です。sumproduct関数の中身は上に書いたとおりなので、 =sumproduct((Sheet1!$A$1:$A$100=$A2)*(Sheet1!$B$1:$B$100=B$1)) これだけ。絶対参照や相対参照の違いは、簡単にドラッグコピーで W11まで複製するための手管です。 2007以降なら、countifs関数あたりでもっと直感的に扱えるように なっているはずです。
補足
早速のご回答有難うございます。 コピペさせて頂いたのですが、なぜか「#N/A」になります。 列、入力セル等間違いありません。 どうしてでしょうか・・・?
- NMZ1985
- ベストアンサー率30% (41/136)
Sheet2からSheet1を参照する時に =COUNTIF(Sheet1!A1:A22,1) と記述することで Sheet1のA1:A22の範囲にある1の数 を取得することができます。
お礼
ご回答有難うございました。
お礼
ご回答有難うございます。 kagakusuki様の「二度手間式」で試してみたのですが、 私のPCでは残念ながら反映されませんでした。 Sheet3、作業列を設けての方法で作成したところ、 無事カウントすることが出来ました! 助かりました。本当有難うございます。 貴重なお時間を割いてのご回答、誠に感謝致しております。 また機会がありましたら宜しくお願い致します。