- ベストアンサー
EXCELのアンケート集計
次のアンケートを集計したいのですが、 『SUMPRODUCT関数』を使用した良い方法があれば教えて下さい。 (もし『SUMPRODUCT』以外で更に簡単な方法があればそちらも) ■Execlに入力済みのデータ ・質問は2項目(A列、B列)です。 ・2項目とも回答は「Yes」or「ややNo」or「No」です。 ・集計数は仮に10件(1~10行)とさせてもらいます。 ■見たいデータ(集計方法) ・A列、B列のどちらかひとつ以上が「Yes」の件数 (Aのみ「Yes」 or Bのみ「Yes」 or A&Bともに「Yes」の何れかが該当) よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 =SUMPRODUCT(((A1:A10="Yes")+(B1:B10="Yes")>0)*1) です。 どちらかという条件(OR条件)は、各条件を「+」で繋いで、合計が0以上という風にします。
その他の回答 (4)
#2です。 >"Yes"のあとの「,1」はどんな意味ですか? ご存知のようにSUM関数は指定範囲内の数値を合計するもので、文字列などは無視されます(=ゼロとして扱われる)したがって、"Yes"という文字列を"1"という数値に置き換えた上で、SUM関数で合計しているわけです。
お礼
何度もありがとうございました。
- maruru01
- ベストアンサー率51% (1179/2272)
>>0)*1 >は何故必要なのですか? 数式を省略して書くと、 =SUMPRODUCT(条件式*1) です。 (今回の場合の条件式は、(○○+△△>0)という形になっていますが) さて、条件式そのものは「TRUE」「FALSE」という論理値を返します。 しかし、論理値は数値ではないので、SUMPRODUCT関数では計算出来ません。 そこで、論理値→数値に変換するのに「*1」と付けています。 Excelでは数値として認識出来る文字列や論理値を、四則演算すると、自動的に数値に変換してくれます。 で、「*1」というのは値を変化させずに、四則演算させるためのものです。 なお、論理値→数値は、 TRUE→1 FALSE→0 となります。 ちなみに条件が複数ある場合は、 =SUMPRODUCT((条件式1)*(条件式2)) となり、条件式どうしですでに四則演算しているので「*1」などは不要になります。 今回も複数条件ですが、 (条件式1+条件式2>0) という風に、全体でまた条件式になってしまっているので、あらためて「*1」を付けて変換する必要があるのです。 それから、ついでですが、No.2の方の言う配列数式は、以下のような数式もあります。 =COUNT(IF((A1:A10="Yes")+(B1:B10="Yes"),)) で、[Ctrl]+[Shift]+[Enter]
お礼
とーっても勉強になりました。ありがとうございます。 仕組みが分かったので、今後も応用して使えそうです。
ではお言葉に甘えて簡単な方法で。 C1に =COUNTIF(A1:B1,"yes")>0 これを下までコピーし、 D1に =SUMPRODUCT(C1:C10*1) でどうでしょうか。
お礼
確かに簡単な方法ですね! だけど、ひとつのセルで処理したかったですよ。 説明が足りませんでした。
配列数式という機能を使えば簡単に算出できます。 合計数を表示させたいセルに、 =SUM(IF($A$1:$A$10="Yes",1,IF($B$1:$B$10="Yes",1))) と入力し、[Ctrl] + [Shift] + [Enter] を押してください。 数式バーに {=SUM(IF($A$1:$A$10="Yes",1,IF($B$1:$B$10="Yes",1)))} と表示されるようになれば成功です。 うまく行かないようでしたら補足してくださいませ。
補足
うまくできました。ありがとうございます。 今後のために更に教えて下さい。 "Yes"のあとの「,1」はどんな意味ですか?
補足
うまくいきました。ありがとうございます。 ちなみに教えて欲しいのですが(今後のために) >0)*1 は何故必要なのですか?