- 締切済み
職場でEXCEL2003を使用しています。
顧客からのアンケートを回収し表にまとめ、項目ごとに集計は出来るのですが。 例えば。 A列に顧客データ B列C列に問1の答え「B列=〇」「C列=×」を表示 D列E列に問2の答え「D列=〇」「E列=×」を表示 として。 問1の答えが「〇」で問2の答えも「〇」。二つの条件が一致するもののみのを抽出し数で表す計算式を習っていなかった為、教えてください。(, , )) 初歩的質問申し訳ございません。 お礼は最低明後日になってしまいます。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! すでに回答は出ていますが・・・ 一例です。 配列数式を使用していますので、極端にデータ量が多い場合はあまりオススメできません。 ↓の画像でG2セルに =IF(SUMPRODUCT(($B$2:$B$100="○")*($D$2:$D$100="○"))<ROW(A1),"",INDEX($A$2:$A$100,SMALL(IF($B$2:$B$100="○",IF($D$2:$D$100="○",ROW($A$1:$A$99))),ROW(A1)))) という数式を入れShift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は上記数式をG2セルに貼り付け後、 数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 G2セルをオートフィルで下へコピーすると、画像のような感じになります。 ※ 1000行程度であれば大丈夫だと思います。 ※ 数式内のセルの範囲指定数に注意してください。m(_ _)m
- keithin
- ベストアンサー率66% (5278/7941)
=SUMPRODUCT((B1:B99="○")*(D1:D99="○")) のようにして両方○の件数が得られます。
- KURUMITO
- ベストアンサー率42% (1835/4283)
答えを一気に求めるということでもなくご自分ができることで解決をすることも大切なことでしょう。 それには作業列を使うというのも一つの方法です。 例えば表のデータが2行目から下方にあるとしたらF列には次の式を入力して下方にドラッグコピーします。 =B2&D2 これでお求めの答えは =COUNTIF(F:F,"○○") なお作業列が目障りでしたらF列を選択してから右クリックをして「非表示」を選択すればよいでしょう。 簡単な関数を使って求めることができますのでどんなにデータ数が多くなっても計算に負担がかかることはほとんどありません。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>二つの条件が一致するもののみのを抽出し数で表す計算式 「抽出し数で表す」という部分がどのような意味なのかが良く解りません。 若しかしますと、「二つの条件が一致するもののみのを抽出し数で表す」ではなく、「二つの条件が一致する行のA列のデータのみを抽出した上で、二つの条件が一致している数を求める」の間違いなのでしょうか? もし、そうだとしますと、Excel2007以降のバージョンであれば兎も角、Excel2003では、関数(計算式)のみで行う事は難しくなりますので、作業列を設けて、別のセルで一旦、補助的な計算処理を行う事で、どの行のデータを抽出するのかを、Excelに判断させます。 今仮に、I列を作業列として使用して、G5以下に抽出結果を表示し、G2セルに2つの条件を満たしている人数を表示するものとします。 まず、I2セルに次の関数を入力して下さい。 =IF(AND(INDEX($B:$B,ROW())="○",INDEX($D:$D,ROW())="○"),ROW(),"") 次に、I2セルをコピーして、I3以下に貼り付けて下さい。 次に、G2セルに次の関数を入力して下さい。 =COUNT($I:$I) 次に、G5セルに次の関数を入力して下さい。 =IF(ROWS($5:5)>COUNT($I:$I),"",INDEX($A:$A,SMALL($I:$I,ROWS($5:5)))) 次に、G5セルをコピーして、G6以下に貼り付けて下さい。 以上です。 尚、2つの条件を満たしているA列のデータを抽出したりはせずに、単に2つの条件を満たしている人数だけを求めるのでしたら、作業列を設けずとも関数のみでも可能です。 もし、アンケートのデータの表がA列~E列の2行目から99行目まであるとした場合には、次の様な関数となります。 =SUMPRODUCT(($B$2:$B$99="○")*($D$2:$D$99="○")) 又もし、アンケートのデータが時間が経つ毎に行数が増えて行くため等の理由により、最下段の行番号が不明な場合には、次の様な関数となります。 =SUMPRODUCT(($B$1:INDEX($B:$B,MATCH("*?",$A:$A,-1))="○")*($D$1:INDEX($D:$D,MATCH("*?",$A:$A,-1))="○")) 但し、SUMPRODUCT関数は、繰り返し計算を行う関数であるため、表の行数が数千行にもなる場合には、計算処理に要するパソコンの負荷が大きくなり、計算結果が出るまでに時間を要する様になりますので、大量のデータを処理させる場合には気を付けて下さい。