• 締切済み

職場でEXCEL2003を使用しています。

顧客からのアンケートを回収し表にまとめ、項目ごとに集計は出来るのですが。 例えば。 A列に顧客データ B列C列に問1の答え「B列=〇」「C列=×」を表示 D列E列に問2の答え「D列=〇」「E列=×」を表示 として。 問1の答えが「〇」で問2の答えも「〇」。二つの条件が一致するもののみのを抽出し数で表す計算式を習っていなかった為、教えてください。(, , )) 初歩的質問申し訳ございません。 お礼は最低明後日になってしまいます。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! すでに回答は出ていますが・・・ 一例です。 配列数式を使用していますので、極端にデータ量が多い場合はあまりオススメできません。 ↓の画像で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/7940)
回答No.3

=SUMPRODUCT((B1:B99="○")*(D1:D99="○")) のようにして両方○の件数が得られます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

答えを一気に求めるということでもなくご自分ができることで解決をすることも大切なことでしょう。 それには作業列を使うというのも一つの方法です。 例えば表のデータが2行目から下方にあるとしたらF列には次の式を入力して下方にドラッグコピーします。 =B2&D2 これでお求めの答えは =COUNTIF(F:F,"○○") なお作業列が目障りでしたらF列を選択してから右クリックをして「非表示」を選択すればよいでしょう。 簡単な関数を使って求めることができますのでどんなにデータ数が多くなっても計算に負担がかかることはほとんどありません。

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

>二つの条件が一致するもののみのを抽出し数で表す計算式  「抽出し数で表す」という部分がどのような意味なのかが良く解りません。  若しかしますと、「二つの条件が一致するもののみのを抽出し数で表す」ではなく、「二つの条件が一致する行の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関数は、繰り返し計算を行う関数であるため、表の行数が数千行にもなる場合には、計算処理に要するパソコンの負荷が大きくなり、計算結果が出るまでに時間を要する様になりますので、大量のデータを処理させる場合には気を付けて下さい。

関連するQ&A

  • <EXCEL>複数の条件を指定して抽出

    データの抽出に関して分からないことがありましたので質問させてください。 現在顧客管理表を作成中で、顧客リストから条件に合うデータを抽出し、 そのデータの個数を同シート内に表示させるような作りになっています。 そのひとつの数式が以下のような感じです。 =SUMPRODUCT((INDIRECT("C3"):C190="○支店")*(INDIRECT("D3"):D190="新規")*INDIRECT("A3"):A190) "範囲 B3:M190の顧客リストからC列(支店名)が『○支店』、かつD列(契約の種類) が『新規』のものを抽出し、個数を表示させる"・・・という数式なのですが、 (A列には、オートフィルにも対応させるため1を表示させる別の数式を入れています) この条件を"C列が『○支店』または『△支店』、かつD列が『新規』のものを抽出" と変えるには、どうすればいいのでしょうか・・・ 単純な内容なのかもしれませんが、教えていただけると助かります。 よろしくお願いします。

  • [Excel2000]データの参照と抽出方法

    A列はC列のデータの一部を抽出したものです。 A列のデータと同じデータがC列の中にあったら、すぐ隣のD列のデータを B列に表示させたいです。(C列とD列は隣同士セットになっています。) この場合、関数はどうすればよいですか? 心ある方、ぜひ教えてください。 ◎実行前 (A列) C列) (D列) 1000-1 1000-1 D0001 1002-1 1001-1 E0001 1003-1 1002-1 F0001   ◎実行後 (A列) (B列)  (C列) (D列) 1000-1 D0001  1000-1  D0001 1002-1 F0001  1001-1   E0001

  • Excel関数を使って、顧客名簿から、部署における担当毎に顧客を分け表

    Excel関数を使って、顧客名簿から、部署における担当毎に顧客を分け表示する。  A列   B列    C列        D列   E列    F列 顧客名  担当者名  所属部署 とあります。 C列を参照し、B列からD列に部署毎の担当者名を抜き出しています。 E列には、D列に抽出された顧客数を出しています。 ココまでは出来たのですが、 F列に、担当者が抱えている顧客を表記したいのです。  A列   B列    C列        D列   E列    F列 顧客名  担当者名  所属部署      営業一課  顧客数   顧客名       なかい   一郎   営業一課       一郎    2    なかい             むらやま  次郎   営業一課       次郎    3    さやま 桃川    三郎   営業二課                  むらやま さやま   一郎   営業一課                  金沢 金沢    次郎   営業一課                  米倉 米倉    次郎   営業一課 大石    三郎   営業二課 その際、行に空白無く、詰めて表記できないでしょうか。 顧客の順番は、D列で表記されている。担当者毎の順番になるようにしたいのです。 お願いします。 遠山

  • 複数条件での集計方法について(Excel2003)

    複数の条件で集計を行い、データの個数を表示させたいと考えてます。 対処方法をご教示下さい。 <例>     列A    列B   列C  列D 1 注文番号 メーカ名 タイプ  購入日 2  123     NEC   NOTE  2010/1 3  123     NEC   NOTE  2010/1 4  123     NEC   DESK  2010/1 5  456     HP    NOTE  2010/2 6  456     HP    NOTE  2010/2 上記の表を列A~列Dの集計により     列A    列B   列C  列D  列E 1 注文番号 メーカ名 タイプ  購入日 個数 2  123     NEC   NOTE  2010/1  2 3  123     NEC   DESK  2010/1  1 4  456     HP    NOTE  2010/2  2 列Eにデータの個数を表示 尚、集計の条件としては、列Aの注文番号が最優先の集計キー、次いで列B、列C、列Dとなります。 又、行数は約1500行前後です。 宜しくお願い致します。

  • Excel関数 2つの条件で集計するには?

    エクセル関数についての質問があります。 A列に赤・黄・青のいずれか B列に○・△・□のいずれか C列に数値のデータが入力されているとします。 このとき、A列が赤且つB列が○となっている 数値を集計する関数もしくは方法はありますか? SUMIFでは条件は一つしか使えませんよね? 現在はC列の数値を、B列が○のときはD列に B列が△のときはE列に、B列が□のときはF列に 表示させるようにし、B列をキーにD~F列の数値 をそれぞれ集計しています。 件数が多いときはめんどうなので、いい方法が ありましたら、教えてください。 よろしくお願いします。

  • EXCEL2007 情報抽出 関数

    A~E列それぞれの一つのセルに"1"を入力し、F列にある情報を抽出、 G列のセルに表示させたいです。 行が多いので、IF関数などは使用できませんでした・・・ 何を使用すればよろしいでしょうか・・・? 例) A1~A20 B1~B20 C1~C20 D1~D20 E1~E20 それぞれの列の一つだけに1を入力します。 ・A 5に1を入力 → F5の情報をG1に表示 ・B15に1を入力 → F15の情報をG2に表示 ・C 2に1を入力 → F2の情報をG3に表示 ・D18に1を入力 → F18の情報をG4に表示 ・E9 に1を入力 → F9の情報をG5に表示 行数が多く、複数の関数を試してみても、数の制限にひっかかるのか うまくいかず困っています。どうぞよろしくお願いします。

  • Excel関数で集計をしたいのですが

    下のような表があり、Excelで有効期限のあるポイント(現在から過去一年間)の集計をしたいのですが、    A      B        C        D         E 1 名前  2004/01/24  2008/03/15  2008/08/02   1年間有効 2 太郎     2        3        2         5 3 花子              2                  2 Eの列に集計を出したいと思いますが、関数で出すことは出来ますでしょうか? 宜しくお願いいたします。

  • 【Excel】該当データ表示方法について

    Excelの表で、(A)列にデータ名、(B)列にデータ値が入力されているとして、 1.(C)列に(B)列のデータ値の種類を昇順で表示、 2.(D)列に(C)列のデータ値を持つ(A)列の文字を表示、 3.(E)列に(D)列のデータ種類の数を表示 という3つの内容を実現したいのですが、(1つでも) ご存知の方、教えて下さい。よろしくお願いしますm(__)m 【イメージ】   | (A) (B) (C)  (D)   (E) ――――――――――――――――――― (1)| A 10 10 A、D、E   3 (2)| B 20 20 B、G    2 (3)| C 30 30 C、F    2 (4)| D 10 (5)| E 10 (6)| F 30 (7)| G 20

  • 最新の単価を求めるExcel関数について

    例えば以下のシートがあったとします。 データシート A列:品番 B列:型式 C列:得意先名 D列:単価 E列:売上日 集計シート A列:品番 B列:型式 C列:得意先名 D列:最新単価 集計シートのABC列がデータシートのABC列と一致した場合の最新の単価を出すには集計シートのD列にどういう式で求めますか?

  • 分ごとの集計で

     初めまして、よろしくお願いします。  A列に 2007/9/6 15:09:46      2007/9/6 15:09:50      2007/9/6 15:10:06 " " と表示されているデータで、分ごとの集計を出したいと思います。  ここで B列には集計されるデーター数が、 C列に =IF(A1<>"",FLOOR(A1,"0:01"),"")  と言う関数を使い、秒数を切り捨て、 D列に  2007/9/6 15:09:00 すぐ下に関数=D1+"0:01:00" E列に集計させる関数=SUMIF(c:c,d1,b:b)  という風に作ったのですが、部分的に集計がでるのですが、集計0とでてしまう部分が多くありました。これはなぜでしょうか。また、何か別の方法でいいものがあれば教えて頂きたく、よろしくお願いします。

専門家に質問してみよう