• ベストアンサー

複数条件で表からデータを検索(引用)する方法

はじめまして。 質問をお願いいたします。 ExcelでSheet2に一覧のデータを作成しました。 A列 B列・・・N列まで 会員番号 B:M(データ) N列が年度  を入力しており、それぞれの列に同じデータは含まれておりません。 (会員番号は同じで年度が違うデータはあります) これらのデータから、Sheet1に会員番号と年度を入力すると D:Mまでのデータが表示できるようにしたいと思います。 どうすれば、そのような検索の式を作ることができるのでしょうか? 私が考えているのは、SUMPRODUCT(会員番号の参照=$A$1,B,M=$B$1)と てA1に会員番号 B1に年度を入力すると、Bから参照したデータを出力す る、というセルをBからM分まで12個つくって表示させようと思いました。 しかし、この関数はとても処理が遅いみたいで表示されるまで時間が かかって仕方がありません。 もっと、スマートで簡単な方法があれば教えてください。

noname#114730
noname#114730

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

A列に1行挿入して A,N列が文字で年数なら =A2&N2 数値とシリアル値なら =TEXT(A2,0)&TEXT(N2,"yyyy") といれて下までコピィしておいて Sheet1はVLOOKUP関数を使います =VLOOKUP(TEXT($A1,0)&TEXT($B1,0),Shhet2!$A:C,COLUMN(C2),FALSE) 右へコピィしてみてください。

その他の回答 (2)

回答No.3

オートフィルタで十分じゃないですか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

2条件で抜き出し、の問題だと思います。ほぼ毎日ぐらい出る問題で 回答者にとってはまたかという問題です。 Googleで「imogasi方式」出照会してみてください。ここのコーナーの過去の質問と回答が相当数出ていて、2,3読むと、ほぼすべての回答の型がわかります。 ーー 関数の組み合わせを使う方法  作業列を使わない方式  空き列に作業列を使う方式(imogasi方式など。入れる式は色々ありえる) 関数を使はない方法  フィルタオプションの設定(関数ではない)による  VBAによる に分類されます。 ーーーー >SUMPRODUCT(・・ は2条件以上の集計には適当ですが、個別データの抜出し、にはお門違いです。

関連するQ&A

  • 複数のシートから一覧表を作成する方法

    次のことを実現させる方法を教えてください。 シート 「あ」「い」「う」があります。 ※例としてはシートを3つあげましたが、 このシートはどんどん数が増えていきます。 シート「あ」   A   B 1 鈴木 1976/1/1 シート「い」   A   B 1 佐藤 1977/1/1 シート「う」   A   B 1 山田 1978/1/1 そこから一覧表を作成したいのです。 その一覧表のシート名を「一覧表」とします。 シート「一覧表」(実現したいシート内容)   A    B   C 1 シート名 名前 生年月日 2 A     鈴木 1976/1/1 3 B     佐藤 1977/1/1 4 C     山田 1978/1/1 参照元のシートが固定されているなら   A    B   C 1 シート名 名前 生年月日 2 あ    あ!A1 あ!B1 3 い    い!A1 い!B1 4 う    う!A1 う!B1 と直接参照先を書けばいいのですが、 この方法では、シートが増えるたびに B列、C列にえ!A1 え!B1というように参照先を その都度書いていかなければいけません。 だから、一覧表で、シート名(A列)を入力ただけで、 自動的にそのシートに記載されている 名前と生年月日が反映されるようにしたいのです。 例えば今A3には「い」と記載されていますが、 これを「あ」と変更すると 以下のようにしたいのです。 B3のセルの中身は い!A1 → あ!A1 C3のセルの中身は い!B1 → あ!B1 一覧表のセルB列、C列にどのように記入すれば自動化できるでしょうか?

  • エクセル 複数ファイルから特定のデータを一覧に

    エクセル 複数ファイルから特定のデータを一覧に 先日こちらで質問をさせて頂いたのですが、うまく解決できず 、またその後独力でも解決できないので、再度質問させて頂きます。 前質問 http://okwave.jp/qa/q6309713.html (元データ) A  B     C      D        E No 月1    月2     月2      氏名    1 2010/11  2010/8   2010/7    佐藤 2 2010/10  2010/8   2010/7    山田 3 2011/12  2010/8   2010/7    田中 4 2010/10  2010/8   2010/7    田中 ・ ・ 上記のデータが1年度あたり ファイル1(4シート+一覧シート) ファイル2(4シート+一覧シート) ファイル3(4シート+一覧シート) ファイル4(4シート+一覧シート) ファイル5(4シート+一覧シート) ※上記A列のNoは1シート内での連番。 のように構成され、それが6年度分(計30ファイル)あるという状態です。 参照用ファイルのセルA1に2010/10と入力してやると、各ファイルのB~D列のどこかに に2010/10とあるデータだけ抽出して一覧に(参照用ファイル同シート内) してくれるようにしたいと考えております。 関数またはVBAにて処理する方法はありますでしょうか? お知恵を拝借願えれば幸いです。

  • エクセルでリストに対応するデータを別シートの表

    エクセルでリストに対応するデータを別シートの表に参照したいです。 「表シート」のB2にリストを作って、 (リストは「一覧表シート」のA,B,Cが入力されているセルを参照しています。) Aを選択すると101の下の段(B11)に、 「一覧表シート」のAの列101の111が入力されるようにしたいです。 Bを選択すると222、Cを選択すると333が入力できるようにしたいです。 この「表シート」の表がややこしいのですが、 建物の部屋番号に対応しているため、3階2階1階という順になっています。 関数で対応できるものでしょうか? 分かりにくい表ですが、よろしくお願いします。

  • Excel2010で複数条件下での重複しない件数

    「個別明細A」というシートに、B列に発生日、F列に支社名、X列に解消日が並んでおります。 同様に「個別明細B」「個別明細C」・・・とシートが続きます。 これらのシートは列を加えたり、データを並べ替えたり等の変形をすることができません。 この「個別明細」シート群のデータを元に、発生年度別未解消支社数を「集計表」というシートに表示したいと思っております。 この「集計表」シートには、B列に各年度の4月1日の日付が入っており、M列に「個別明細A」、N列に「個別明細B」、L列に「個別明細C」、以下右列に続く・・・に集計結果を表示する予定でいます。ちなみに、B列は「yyyy年度」と書式設定を指定してあります。 発生年度別未解消件数は計算できました。 =COUNTIFS('個別明細A'!$B$2:$B$1000,">="&(DATE(YEAR($B13),MONTH($B13),DAY($B13))),'個別明細A'!$B$2:$B$1000,"<"&(DATE(YEAR($B13)+1,MONTH($B13),DAY($B13)))) 全体の支社数も計算できました。 =SUMPRODUCT(1/COUNTIF('個別明細A'!$F$3:$F$1000,'個別明細A'!$F$3:$F$1000)) この2つの合わせ技、発生年度別未解消支社数の算出方法がわかりません。 ご教授の程、よろしくお願いいたします。

  • エクセルVBAで複数の条件を満たす検索方法

    エクセルのVBAを使ってデータ検索を行うプログラムを作っています "Sheet2"は下記のように、A列に生年月日、B列に住所、C列に電話番号、D列にメールアドレスが入力されています        【Sheet2】   生年月日  住所    電話番号  メールアドレス     A      B       C        D 1 1999/9/10 東京都○○ 11-111-1111 aa@goo.co.jp 2 2003/2/26 大阪府○○ 22-222-2222 bb@goo.co.jp 3 1985/6/22 福岡県○○ 33-333-3333 cc@goo.co.jp 4 1995/4/11 愛知県○○ 44-444-4444 dd@goo.co.jp "Sheet1"のA1に生年月日、A2に住所、A3に電話番号を入力し、"Sheet2"のデータと照合して、3つの値が合致した行のD列のメールアドレスを"Sheet1"のB1に返したいと思います 上記の表だと、"Sheet1"のA1に1985/6/22、A2に福岡県○○、A3に33-333-3333と入力されている場合、B1にcc@goo.co.jpの値を返すようにしたいのです。 findを使って生年月日、住所、電話番号を検索し、行番号を取得して、3つの行番号が同じならその行番号のD列の値を返すというような方法で考えていたのですが、エラーが回避できずに困っています。 生年月日が同じ人がいたり、夫婦や親子などは住所と電話番号が同じといった場合があり、上手く検索できません。  エラー回避の方法、もしくは他のやり方でも構いませんので どなたかご教授願えないでしょうか? よろしくお願いします。

  • Excel2000の表を検索して、数字ではなくイメージデータを取り出すことができますか?

    こんなこと可能なのでしょうか? ”マスター”シートのA列にキーとなる番号1~3が入っており、 B列のそれぞれのセルにイメージデータが貼り付けられた表が 作成してあります。 この表を検索して、”完成表”シートのあるセルにキー番号を入力すると 対応するイメージデータが表示されるようにすることはできるのでしょうか? lookup関数を使ってみましたが、セルに入力されている数字や文字じゃないと 表示されません。 何か良い方法はありませんか?知恵を貸してください。

  • Excel VBAで会員データをある条件で振り分けたい

    大変困っているので助けてください。 A列に「会員番号」、B列に「名前」、C列に「住所」・・・と言った感じのデータがあります。 Input BoxまたはUser Formを使って会員番号を入力し、該当したときにその隣(例えばD列)に「1」などの値を入力できる方法。 または、上記のデータと別のデータ(項目は同じ)を照合し一致しない物を別のシートに表示するという形でもいいです。 仕事で早急に必要なのですが、VBAの知識があまり無いのでいろいろ試行錯誤しましたができません。 お願いします。

  • エクセル 複数条件に合うデータを数えたい

    エクセル 複数条件に合うデータを数えたい エクセルでA列に何らかの値が入っていて(=空欄でない)、かつB列の値が“○”の数を数えたいです。 =SUMPRODUCT(($A:$A="*")*($B:$B="○"))と入れましたがSUMPRODUCTはワイルドカードが使えないようで結果は「0」となってしまいダメでした。 エクセル2007を使ってるので =COUNTIFS($A:$A,"*",$B:$B,"○")としたらできたのですが2002を使っている人と共有したいので2002でも使える関数を使いたいです。 どうしたらいいのでしょうか?

  • VLOOKUP関数が数式として認識されません!

    スポーツクラブの学童会員名簿を作成しています。 【目的】 VLOOKUP関数を利用して、シート1「名簿」のA列に会員番号を 手入力すると B列に学年、C列に氏名が各々自動入力されるようにしたい。 【設定】 ・シート1を「名簿」とし、  A列を会員番号、B列を学年、C列とD列を結合して氏名としました。 ・シート2を「参照データ」とし、  A列を会員番号、B列を学年、C列とD列(結合を解除)を氏名と  しました。 ・シート2の1行目はタイトル行とし、実際のデータが入っている  部分はA2:D20です。 ・シート1、シート2の全データは文字列として書式設定しています。 【状況】 学年を検索するための数式をシート1のB2に以下のとおり 入力しました。  =VLOOKUP(A2,参照データ!$A$2:$D$20,2,0) ところが、B2セルには正常な値(学年)が表示されずに 上記の数式がそのまま表示されてしまうのです。 A2に会員番号を入力してもB2の表示は変わりません。 本やウェブで解決方法を調べてみましたが、一向にわからず 困り果てております。 私はエクセル初心者なので一般的にはくだらない質問かも しれませんが、何卒ご教示くださいませ。

  • エクセルで、2つのセル値(2つの条件)から、別シートの表から該当する値を参照する方法

    シート(1)のA列とB列のセルに入力されている値を元に、 シート(2)の表を参照し、該当する値をシート(1)のC列に 表示させる方法があれば 教えて頂けると助かります。 なおシート(1)のA列は、参照するシート(2)の表の列タイトルに対応し、 シート(1)のB列は、シート(2)の行タイトルに対応するマトリックス表に なっております。 また、この列行タイトルの表記は「1から」または「1から9まで」 という範囲での表示になっています。 (例:シート(1)元データ) No| A列 | B列 | C列 | --------------------------------- 1 | 07  |  22  |  20 | ←C列は、シート(2)表を参照  2 | 18  |  15  |  30 |        3 | 01  |  09  |  05 |       4 | 21  |  03  |  30 |  5 | 30  |  28  |  35 |  (例:シート(2)参照する表) A列\B列 | 1~9| 10~19 | 20~29 | -----------------------------------   01~  | 05  |  10  |  20  |         05~  | 15  |  15  |  20  |           10~  | 20  |  25  |  30  |        15~  | 25  |  30  |  30  |    20~  | 30  |  35  |  35  |  現在、手作業でC列への入力を行っております。 何とか、作業効率を上げたいと思っておりますので、 ご指導下さいます様 宜しくお願い致します。

専門家に質問してみよう