EXCELで複数条件に合致する全データの抽出方法

このQ&Aのポイント
  • EXCELで複数条件に合致するデータを一括抽出する方法について説明します。
  • 講師への講師料支払いの明細表を月ごとに作成したい場合、EXCELの関数を使用して実現できます。
  • 条件に合致したデータを抽出して他のシートに表示する方法を詳しく解説します。
回答を見る
  • ベストアンサー

EXCELで複数条件に合致する全データの抽出方法

任意のデータ(表)から条件に合致するデータをすべて抽出し、別表の任意の場所に表示する方法を教えていただけますでしょうか。 EXCELにあまり詳しくないので、マクロではなく関数での方法をお願いいたします。 <原簿データ(Sheet1)> ・講師の授業実績を日別に管理しているデータです。 ・年間の日別データ(約500行)が一つの表に入っています。 ・列(項目)は、これ以外にも10項目くらいあります。  A        B     C     D      E 1 実施日    曜日  講師名  授業時間 講師料 2 2012/8/30  木    中居   1      2,000 3 2012/9/1   土    中居   2      4,000 4 2012/9/10  月    木村   1      2,000 5 2012/9/14  金    中居   2      4,000 6 2012/9/20  木    稲垣   2      4,000 7 2012/9/30  日    中居   1      2,000 8 2012/10/2  火    香取   2      4,000 やりたいことは、上記データから、講師への講師料支払いの明細表を毎月、講師別に作成することです。 具体的には「実施月」と「講師名」を条件にして、一致するデータ(任意の項目のみ)をすべて別シートの支払明細表の任意の位置に挿入することです。 たとえば、支払明細表の任意の位置で「9月」、「中居」と入力した場合、原簿データの9月分の中居さんの全データを抽出し、「実施日」、「曜日」、「授業時間」を任意の位置の下方に表示するようにしたいです。 <支払明細表>  A        B     C     D      E 1 【9月】   【中居】 ←実施月と講師名を入力 2 実施日    曜日   授業時間 *******以下表示データ 3 2012/9/1   土     2 4 2012/9/14  金     2 5 2012/9/30  日     1 分かりにくいかもしれませんが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

こんにちは。 初心者さんが一度はやってみたいと思いついて、出来ずに諦めるご相談の一種です。 エクセルには「条件に該当するデータを並べて表示する」関数はありません。 簡単な作成方法: シート1に実施記録を用意する シート2以降に次の通り作成する C1セルに2012のように年を記入する D1セルに9のように月を記入する E1セルに講師名を記入する A1セルに「実施記録」と記入する A2に =IF(AND(YEAR(Sheet1!A2)=$C$1,MONTH(Sheet1!A2)=$D$1,Sheet1!C2=$E$1),ROW(),"") と記入、以下コピーしておく C3セルに =IF(ROW(C1)>COUNT(A:A),"",INDEX(Sheet1!A:A,SMALL(A:A,ROW(C1)))) D3セルに =TEXT(C3,"aaa;;;") E3セルに =IF(ROW(C1)>COUNT(A:A),"",INDEX(Sheet1!D:D,SMALL(A:A,ROW(C1)))) とそれぞれ記入、以下コピーしておく。 何か条件を変えたいなら、A列の条件式を適切に応用します。 #補足 言わずもがなですがシート2のA列は別にA列にある必要はありません。 必要なら(目障りなら)M列でもZ列でも、どこでも好きなところに配置して作成します。

shigeru1123
質問者

補足

早速の回答ありがとうございます。 教えていただいたように数式を入力しているはずなのですが、どうもうまくいきません。 原簿データは月別にシートを分けたので、年と月の条件が必要ないため、講師名のみの条件に変更しました。 9月分の原簿データには、同一日、同一講師のデータが複数レコードづつ存在し、中居さんのデータは全部で60レコードあるのですが、9月1日のデータのみ(5レコード)しか表示されません。 その下のC3~D3は空白になります。 実施記録の列には、条件が一致したところの行番号が入るみたいですが、 25~28行までに25~28の数字入って、他は空白です。 C3のIF文の「ROW(C1)>COUNT(A:A)」ではじかれてしまっているのでしょうか。 そもそもこの式はどういう意味なのでしょうか。 それから、A2、C3、D3、E3の式の下方へのコピーは、抽出データ数が表示できる程度に適当でよいのでしょうか。 使ったことのない関数のため、質問ばかりで大変申し訳ございませんが、ご教示をお願いします。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

再掲: >何か条件を変えたいなら、A列の条件式を適切に応用します。 と回答して置いた通り、添付図のシート2のC3、D3、E3の数式は前回と全く同じです。 シート2のA2だけ修正: =IF(Sheet1!C2=$E$1,ROW(),"") 以下沢山コピー >どこまでコピーしておいたらいいですか 最大限、つまり元表が仮にもしも「すべて中居さんだったら」、中居さんシートにはその行数だけデータを転記しなきゃなりませんよね。 現実にはそういう事は勿論ありませんが、「可能性として」そういう事があり得る限りは、元表の最大行数分だけ数式をコピーして備えておかなきゃいけません。 #補足 同じ「つもり」、やった「はず」でも、勝手に間違ったやり方をしているから正しい答えが得られません。 まず「全く同じ」で作成して、キチンと出来ることを確認してください。 次のステップとして、何をやっているのかちゃんと理解して、それから実地に「同じつもり」でやり直してください。 #そもそも 「全く同じ」で作成するとは、あなたがご相談にご自分で書いた通り、そしてわざわざ添付図まで付けて何行何列にどういう具合に記入するとご説明したその通りのレイアウトで、一回練習用にあなたもエクセルを作成してくださいという意味です。 そのあと実地でやってみたら失敗して、今は一体どこをどう直したらいいのか判らなくなったわけです。 それはつまり「例えば」で教われば、あとは自分で出来ると思ったのが間違いだったという事です。 なので今度は「ホントはこうなってます」「自分では教わった数式をこうしたらいいと思ってどこのセルにこう記入しました(けどこんな結果になってしまって上手くいきません)」というのをキチンと正しく詳しく具体的に目に見えるように情報提供して、このご相談は一回解決で閉じてから、もう一回新しいご相談として投稿し直してみてください。

shigeru1123
質問者

お礼

ご回答ありがとうございました。 ご指摘のとおり、添付図と全く同じものを作成し、教えていただいたとおりにやってみました。 自分では正しく入力したつもりですが、間違っているものですね。 何度か修正しているうちに、やっと添付図の例がうまくいきました。 これを応用して、実際のデータでやってみましたが、これもうまくいきました。 やはり一度正しい結果がでる例でやってみてから、理解し実施をすべきでした。 おかげさまで新しい関数等も勉強になり、完全ではありませんが、だいぶ理解できた気がします。 本当にありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

「ピボットテーブル」がご希望の結果に近いかも。

関連するQ&A

  • エクセルで複数条件から抽出するいい方法を教えてください

    エクセルで会計処理をしています。出納帳部分に 例えば     月日     摘要   支出金額  4月20日 A社4月分 50000円  4月25日 B社4月分 30000円   :  5月22日 A社5月分 80000円  5月23日 C社5月分  5000円   : と入力したときに別シートに作成してある月別の業者支払一覧表(横 4月から翌3月まで 縦 A社からE社 という表)にも入力するよう該当するセルに =IF(ISERROR(VLOOKUP("A社4月分",出納帳!$H$6:$K$261,4,FALSE)),"",(VLOOKUP("A社4月分",出納帳!$H$6:$K$261,4,FALSE))) という関数を入れて摘要欄に一致する文字があれば支出金額を抽出するようにしてあります。でもこの式ですと新しい業者が出てきたときに業者一覧表をいちいち作り直さなければいけません。そこで一つ目の条件として月日の欄から○月だけを抽出、2つ目の条件で○社というふうに取引業者が増えても対応できる良い方法はないでしょうか?

  • 2つの条件の下でのデータ抽出

    現在データをまとめているのですが、 どのようにデータをまとめる方法があるかわりません。 そこで、質問させていただきます。 例えば、下記のような月曜日は梅干のおにぎり、火曜日はおかかのおにぎりなどのデータがあります。 月 梅干 火 おかか 水 しゃけ 木 おかか 金 おかか 月 おかか 火 おかか 水 梅干 木 梅干 金 おかか これで月曜日は梅干とおかかが1回ずつ、火曜日はおかか2回など・・。曜日ごとにどのおにぎりが多かったかのデータを抽出したいのですがどのような方法があるでしょうか?

  • エクセルで抜けている曜日を追加する方法?

    エクセルの表で 曜日欄      データ欄 2007/9/24(月)  2007/9/25(火) 2007/9/26(水) 2007/9/29(土) こんな感じでところどころ抜けた日 があるデータ表があります。 抜けている日を自動的に追加して、 (つまり 日付け有り、データなしのセルを追加) 曜日が全てそろっているカレンダー的 データ表を作りたいのですが、 どうすればいいでしょうか?  

  • Excel 関数を使う? 抽出データ

     以下について教えてください。 ============================== 【基になる表--「A」の表と呼ぶことにします。】  列方向のリストには左から「月」「日」「地域」「数」が並んでいる。  「月」には1月から12月までのデータが、 「日」には1日から30もしくは31日のデータが、 「地域」には北海道、青森、新潟、東京、大阪の5つの地域が、 「数」には売上数が並んでいるとする。 【基になる表から抽出して作られた表--これから便宜上「B」の表と呼ぶことにします。】  列には「地域」の中から北海道と青森を、 行には「月」から9月を、「日」から15日を、 列と行が交差するセルには「数」を置き、「9月15日の北海道と青森の売上数」の合計を抽出したい。  さらに、Bの表において、 「地域名」の北海道を削除して新潟にしたり、9月15日ではなく9月18日に置き換えても、 列と行が交差するセルに自動的に集計結果が表されるようにしたいのです。  ちなみに、Aの表もBの表も同じブックに作り、シートは別にします。 ===================================  DSumやIfSum関数だと私が作りたいBの表のような形式になりません。列方向にしかラベルを置けません。  ピボットテーブルを使った集計ならば、求めているデータ以外のデータも表示されてしまいます。  どうすれば求めていることができるでしょうか?どうか皆さんの知恵をお貸しください。

  • エクセルを用いてデータを抽出したい

    エクセルについて教えて下さい。 資料を添付したのですが、1年分のデータを用い、1日の特定の期間の中で、最高と最低の数値を出したいと考えています。 特定の期間というのは、(1)9:00~11:00 (2)12:30~15:10の二つの期間です。 最終的には、下記のような表を作成したいと考えています。 日にち  9:00~11:00  12:30~15:10      最高    最低    最高    最低 1月2日  8950  8000  9000  7500 1月3日  9000  8500  9500  6500 1月4日  9500  7500  8000  6000   データは1年分あり、データが膨大にありすぎて、どのような形で行えば一番簡単にデータを抽出できるか悩んでいます。当方、c言語などの知識はないので、エクセルの関数を使ってデータを抽出したいのですが、なにか良い方法があればご教授ください。

  • エクセルで曜日を条件づける方法

    エクセルで曜日を条件づける方法はありませんか? エクセルの表打ち込んだ日付を月~金を平日として土、日を休日として条件づけたりしたいです。 詳しい方よろしくお願いします。

  • エクセルのデータ抽出

    初歩的な質問ですみません。エクセルの表があります。日付と会社名が別々のセルに入力されています。その中から、08年1月1日から08年4月30日までの日にちに対応した会社名のデータを抽出するには、どうしたらよいのでしょうか。

  • エクセルで日別データを週別に集計したいのですが。

    エクセルで日別データを週別に集計する方法を教えてください。 【日別データ】   3/02(日) 10   3/03(月) 20   3/04(火) 50   3/05(水) 50   3/06(木) 30   3/07(金) 10   3/08(土) 10   3/09(日) 20   3/10(月) 40   3/11(火) 20   3/12(水) 10   3/13(木) 30   3/14(金) 10   3/15(土) 40     ↓ 【週別データ】   3/02-3/08 180   3/09-3/15 170 行列関数を使用したのですがどうも上手くいきません。 よろしくお願いします。

  • 【修正】エクセルで条件にあったデータを・・・(表を修正しました)

    作業日で仕事をする日を1、休みの日を0とします。 ..........列A...............列B..................列C..D..E..F..G..H 行1.あ社人数..い社人数......月日..1..2.3..4..5 行2......5................3..................作業日.1..1.1..1..0 行3......0................4..................作業日.1..1.1..1..0 この作業日程表から、あ社、い社の月日別述べ人数を 月日...1...2...3...4...5...6... あ社...5...5...5...5...0.. い社...7...7...7...7...0 のように表にしたいです。

  • Excelで2つの条件が一致したデータの抽出

    Excelで2つの条件が一致したデータの抽出 こんにちわ。 タイトルの通り、Excelで2つの条件が一致したデータの抽出作業を行っています。 Sheet1にデータがあり、以下のような構成なっています。 A列    B列    C列 日付   社員名   売上金 6月1日 鈴木     3万円 6月1日 今井     2万円 6月2日 川口     10万円 6月3日 鈴木     4万円 6月3日 野口     1万円 6月4日 鈴木     3万円 6月7日 佐藤     6万円 6月7日 今井     2万円 6月7日 黒木     7万円 6月9日 野口     3万円 A列の日付は不連続かつ同一日付のものもあります。 Sheet2に以下のフォーマットを作成してあります。 1行目:B1セルから連続する日付(6/1~6/30まで) A列:A2から社員名(社員名は各セルに固定) 6月1日 6月2日 6月3日 6月4日 6月5日 ・・・ 鈴木 佐藤 今井 川口 野口 黒木 Sheet2のセルに、Sheet1の表の日付と社員名が一致した売上金のデータを反映させたいのです。 そこで例えばSheet2のB2セルには以下の関数を入れました。 B2=IF(ISNA(MATCH($A$2:$A$9&$B$1:$N$1,INDEX(Sheet1!$C$2:$C$24&Sheet1!$A$2:$A$24,))),"",INDEX(Sheet1!$D$2:$D$24,MATCH($A$2:$A$9&$B$1:$N$1,INDEX(Sheet1!$C$2:$C$24&Sheet1!$A$2:$A$24,),0))) この関数を入れると、該当するところには売上金のデータが反映されるものの、それ以外のセルには全て#N/Aが表示されてしまいます。 この#N/Aを表示させないようにするには、関数をどのようにすればいいのでしょうか? エクセル初心者なので、分かりやすくご教授願えたら…と思います。 よろしくお願いいたします。 使用OS:XP  使用ソフト:Office2000 Pro.