• ベストアンサー

複雑な条件のあるデータ抽出の方法

macchan1の回答

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.6

ご質問の主旨は該当データを他シートに抽出したいということでしょうか? この場合は、配列数式を利用すれば関数でも対応できます。 データの個数や平均値を他のシートに表示したい場合は#1の回答のように(数式にシート名を追加する)SUMPRODUCT関数や配列数式を使用します。 平均が数値で入力されていない平均ですが、そのままではできません。例えば最も数が多いものを出すことはできますが、正確では無いと思います。 このような場合は、A,Bの評価を数値に換算してそれをもう一度評価に戻すことはできます。 ご希望の処理がいまひとつ不明です。また、皆さんの回答で不都合なことやうまくいかないことがあれば返答するようにして下さい。

tenmaru
質問者

補足

説明不足で申し訳ありません。給与のAやBは実際の数値 が入っています。おっしゃる通り#1さんのSUMPRODUCT関数を使って作成したいと考えています。

関連するQ&A

  • Access2003 複雑な条件のデータ抽出

    ☆1つのテーブルで、フィールド[A]~[C]があり、文字および英数字のデータが混在しています。 (ただし、フィールド[C]には、空欄(Null)になっている場合があります) =========================================================== (テーブル(1)) No  [A]      [B]    [C]     [D]      [E]      [F] 1   111      X    あ       2   222      X     か   3   333      X     さ  4   111      Y    た 5   222      Y   (Null)  6   333      Y     は 7   222      Z     ま   8   333      Z     や  9   111      Z    ら    =========================================================== [課題] (1) テーブル(1)のフィールド[A]の値を参照し、「111」の場合は、   フィールド[C]の値を[D]へ抽出する([B]でグループ化) (2) 同様に、フィールド[A]の値を参照し、「222」の場合は、   フィールド[C]の値を[E]へ抽出する([B]でグループ化) (3) 同様に、フィールド[A]の値を参照し、「333」の場合は、   フィールド[C]の値を[F]へ抽出する([B]でグループ化) (4) 新規クエリにて、上記課題(1)~(3)の条件を指定して実行すると    以下の抽出結果が表示される =========================================================== [抽出結果] (テーブル(2)) No  [B]    [D]    [E]      [F] 1   X     あ    か      さ     2   Y     た   (Null)    は   3   Z     ら    ま     や =========================================================== 別々のレコードにあるフィールド[C]の値を、条件に従い テーブル(2)のように1つのレコードにまとめたいのです。  大変恐縮ですが、私はSQLが書けないので、フィールド欄へ関数式を 入力して条件を指定しております。 できましたら、各フィールドへ入力する関数式を教えていただけると助かります。 また、関数だけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • エクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

    こんばんは。教えてください。 元データ(sheet1)を更新するたび 2つの条件にあったデータを 別シートに自動的に抽出したいので 適した関数がありましたら教えてください。 ◇シート1◇ ※元データ  A      B     C     D     F 1 氏名 役職 部署 年齢 移動時期      2 山田 社員 開発 45  未調整 3 田中 社員 人事 42  4/1~ 4 鈴木 派遣 企画 30   5 高橋 役員 人事 50  未調整 6 坂野 社員 企画 33  未調整   7 井上 派遣 企画 29  未調整 ◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出  A      B     C     D    F 1 氏名 役職 部署 年齢 移動時期  2 高橋 役員 人事 50  未調整 補足 ・元データ(シート1)はこれからもデータを追加するので  その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。 ・マクロ、VBAは知識がないので  関数で作成したいです。 ・できるだけエラー(#N/Aなど)表示されないようにしたいです。 説明が不十分で伝わりにくいかと思いますが よろしくお願いします。

  • VBA で抽出したデータが一定数まできたら、異なるセルに折り返して抽出するように設定したい。

    VBA で抽出したデータが一定数まできたら、異なるセルに折り返して抽出するように設定したいです。 ◇シート1◇ ※元データ  A      B     C     D     1| 氏名 役職 部署 年齢      ―――――――――――――――― 2| 山田 社員 開発 45  3| 田中 社員 人事 42   4| 鈴木 派遣 企画 30   5| 高橋 役員 人事 50 6| 坂野 社員 企画 33   7| 井上 派遣 企画 29 ◇シート2◇  条件1.役職は"役員"で、部署が"人事"の人の   氏名、役職、部署をA3から順に抽出する 条件2.A列のデータが9行目まできたら     D3に抽出されるようにする  A      B     C     D     E    F 1 氏名 役職 部署  氏名 役職 部署 2 高橋 役員 人事   3 4 5 6 7 8 9 ―――――――――――――――――――― ちなみにこのサイトで以下のコードを作成してもらいましたが これだとデータ元の全ての行が抽出されてしまいます。 Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:E1").AutoFilter .Range("A1:E1").AutoFilter Field:=2, Criteria1:="役員" .Range("A1:E1").AutoFilter Field:=3, Criteria1:="人事" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A3") .AutoFilterMode = False End With End Sub 条件2のデータを折り返す条件が難しいようであれば 条件1の3列のみ抽出する方法で結構ですので教えてください。 よろしくお願いします。

  • excel データの抽出について

    仕事でexcelの表からデータを抽出して資料を作成したいと思っています。 ≪シート1≫表から≪シート2≫表へ「1が立っているデータのタイトル(あ~お)を抜き出したいのです。どなたか方法があれば教えてください。(できればVBA等を使わないで作りたいです。) ≪シート1≫     あ い う え お A  1    1 B     1 1   1 C         1 1 ≪シート2≫ A あ う B い う お C え お

  • エクセルで複数条件、なおかつ数値の範囲に該当するデーターの抽出の方法を教えてください。

     A列   B列  C列  D列   E列  ・・・・   会社名  年齢  性別  職種   1月  ・・・・ A会社   42   女   事務  140,000 A会社   36   男   営業  180,000 B会社   45   女   事務  150,000 B会社   28   男   営業  165,000 C会社   39   男   事務  155,000 C会社   31   男   営業  170,000  例えば、給与支払表がある時に  年齢が30歳以上35歳以下の男性の営業職の人数と給与の合算並びに、  年齢該当者数の給与の平均金額を算出したいのですが、  教えてください! 但し、該当年齢者がいない場合は人数欄に"0"と表示し たいのです。SUMPRODUCTでやってもうまくいかないのですが・・・

  • SUMPRODUCTに3つ以上の条件

    A列に男女別、B列に年齢別、C列に住所、D列に部署別のデータが1万人以上、入っています。 1つのセルに、関数で港区、男性、30代の人数のデータを抽出したい。 SUMPRODUCTに条件の2つまでは正しく抽出されるが、3つめの年代別がうまくいきません。 また、そのほかに E-1セルに"男女別"、F-1セルに"年齢"、G-1セルに"住所"、H-1セルに"部署名"、I-1セルに 人数の項目を作成し、E~Hに条件を入れれば、I-1のセルに、人数を出したい場合の作り方を 教えてください。よろしくお願いします。

  • 抽出条件に応じてテーブルを作り分ける方法

    抽出条件テーブル(a)があり、抽出条件が参照するテーブル(b)がある。(a)には複数の抽出条件が登録され、(a)を参照しつつ、(b)から抽出されるテーブル(c)を抽出条件に応じて複数作成したい。つまり、(a)に登録された抽出条件の数だけテーブル(c)が作成される。 これをクエリで実行できる方法をご教示願いたい。 なお、(b)からデータを抽出する場合、上記の抽出条件テーブル(a)に代えて、クエリ内に抽出条件を20~30個記述する方法でも可。 Access2010を使用しています。VBAは使用しません。

  • Access もっと簡単な抽出方法はありますか?

    お世話になります。 Access2010 抽出方法についてご教示下さい。下記のテーブルがあります。 <社員テーブル> 社員番号 氏名   性別  血液型 00100  山田太郎  男性  A 00200  鈴木一郎  男性  A 00300  田中次郎  男性  B 00400  鈴木花子  女性  O <人事テーブル> 社員番号 人事C   部署名C  開始日    終了日 00100   1           2000/04/01  2000/04/01 00100   2     2     2000/04/01  2005/03/31 00100   3     1     2005/04/01  2008/04/01 00100   3     3     2008/04/01 00200   1           2005/04/01  2004/04/01 00200   2     1     2005/04/01  2007/03/31 00200   3     3     2008/04/01 00300   1           2010/10/01  2010/10/01 00300   2     2     2010/10/01 00400   1           2011/04/01  2011/04/01 00400   2     1     2011/04/01  2015/03/31 00400   4           2015/03/31  2015/03/31 ※人事Cの1(入社)の登録では部署名Cは登録されず、別レコードに  登録されます。 <人事マスタ> 人事C 人事  1  入社  2  人事  3  部署移動  4  退職 <部署マスタ> 部署名C  部署名  1    営業部  2    経理部  3    総務部 最終的にフォーム上のリストボックスに下記にように表示したいところです。 社員番号 部署名 氏名   性別 血液型 00100   総務部 山田太郎 男性  A 00200   総務部 鈴木一郎 男性  A 00300   経理部 田中次郎 男性  B 00400   営業部 佐藤花子 女性  O 下記のようにやって、とりあえず抽出はできたのですが。。 もっとよい方法があればお教え頂けたらと思います。 1.人事テーブルで人事Cが2 or 3で抽出し、グループ化、かつ開始日の最大  でクエリを作成   00100 2008/04/01   00200 2008/04/01   00300 2010/10/01   00400 2011/04/01 2.1のクエリと人事テーブルを社員番号と開始日で紐づけてクエリ作成  社員番号  部署名C   開始日    00100    3     2008/04/01  00200    3     2008/04/01  00300          2010/10/01  00300    2     2010/10/01  00400          2011/04/01  00400    1     2011/04/01  このように、00300と00400については入社のレコードも抽出されて  しまうので、ここでさらに部署名CをIs Not Nullとする。  00100    3     2008/04/01  00200    3     2008/04/01  00300    2     2010/10/01  00400    1     2011/04/01 3.社員テーブルと2のクエリ、部署マスタを紐付けます。  社員テーブル---------2のクエリ---------部署マスタ       (社員番号)    (部署名C)  このクエリをリストボックスのソースとしてます。 なお、実際には1と2のクエリはひとつにまとめてます。 SELECT Q.社員番号, 人事テーブル.部署名C FROM (SELECT 人事テーブル.社員番号, Max(人事テーブル.開始日) AS 開始日の最大 FROM 人事テーブル WHERE (((人事テーブル.人事C)=2 Or (人事テーブル.人事C)=3)) GROUP BY 人事テーブル.社員番号) AS Q INNER JOIN 人事テーブル ON (Q.開始日の最大 = 人事テーブル.開始日) AND (Q.社員番号 = 人事テーブル.社員番号) WHERE (((人事テーブル.部署名C) Is Not Null)); もっとシンプルに結果を出せるのでは?ということで質問させて 頂いた次第です。 宜しくお願い致します。

  • データ抽出方法

    おはようございます。 sheet1 B列、C列に重複してるデータと、そうでないデータが混在して沢山あります。 sheet2 B列、C列に一点一様の型でデータを抽出したいご伝授下さい sheet1 B列、C列 A-1-1 A A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-1 B C-2-3 C sheet2 B列、C列(抽出結果) A-1-1 A B-2-1 D B-2-2 E C-2-1 B C-2-3 C

  • 条件に合うデータの抽出

    今、データの集計に取り組んでいます。 A列に性別、B列に学年、C列に出身都道府県が 入っています。 このデータを元に、18歳で北海道出身の男性が何人、 18歳で北海道出身の女性が何人、18歳で青森県出身の 男性が何人・・・(以下続く)、といった具合で、 特定の年齢と出身を基準とした時に合致する人数を カウントしたいのですが、これはどのようにすれば 良いのでしょうか?