• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelのデータ抽出?検索?についておしえてください。 )

Excelデータの抽出・検索について教えてください

このQ&Aのポイント
  • Excelのデータ抽出・検索についてお伺いします。エクセル2003のシートには組、番号、氏名、科目のデータがあります。他のシートから特定条件のデータを読み出す関数は存在するのでしょうか?具体的には、氏名と科目名が一致するデータを他のシートから抽出したいです。
  • Excelのデータ抽出・検索に関して詳しく教えてください。エクセル2003のシートには組、番号、氏名、科目のデータがあります。他のシートから特定条件のデータを読み出す方法はありますか?具体的には、氏名と科目名が一致するデータを抽出したいです。
  • Excelでのデータ抽出・検索についてお聞きしたいです。エクセル2003のシートには組、番号、氏名、科目のデータがありますが、他のシートから一致するデータを取得する関数が存在するのでしょうか?具体的には、氏名と科目名が一致するデータを抽出したいです。

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

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

こんばんは! すでに回答は出ていますので、参考程度で・・・ 当方使用のExcel2003での方法になります。 ↓の画像で説明させていただきます。 Sheet1に数式を入力する前に一手間・・・いや、二手間かけています。 各組のデータは科目が10科目・生徒数が50名まで対応できるようにしてみました。 まず、1組のSheet2のD2~M52セルを範囲指定 → メニュー → 挿入 → 名前 → 定義 から 名前欄に _1 と名前定義します。 (数値が頭に入るとたぶん名前定義できないような気がしたので、とりあえずアンダーバーを入れておきます) 同じく、Sheet2の氏名欄のC2~C52セルを範囲指定し、 名前定義で _1氏名 と名前定義 Sheet2の科目のD1~M1セルを範囲指定し 同様に、_1科目 と名前定義 以上の操作を各組全て名前定義づけしておきます。 最後にSheet1のD2セルに =IF(OR($C2="",ISERROR(INDEX(INDIRECT("_"&$A2),MATCH($C2,INDIRECT("_"&$A2&"氏名"),0),MATCH(D$1,INDIRECT("_"&$A2&"科目"),0)))),"",INDEX(INDIRECT("_"&$A2),MATCH($C2,INDIRECT("_"&$A2&"氏名"),0),MATCH(D$1,INDIRECT("_"&$A2&"科目"),0))) という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 以上、長々と書きましたが、 参考になれば幸いです。 的外れなら読み流してくださいね。m(__)m

taa1031
質問者

お礼

ありがとうございます! 画像まで入れていただいて 本当にわかりやすくて助かります。 とっても参考になりました。 まだ出来ていないのでチャレンジしてみます! ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

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

No.4です! たびたびごめんなさい。 前回書き忘れましたが、 名前定義する場合に _(アンダーバー)の後の数値は各組の数値で名前定義してください。 仮に2組なら _2 、 3組なら _3 ・・・のような感じです。 どうも何度も失礼しました。m(__)m

taa1031
質問者

お礼

重ねて御礼申し上げます。 本当に丁寧に教えていただいてありがとうございます。 がんばってみます。

すると、全ての回答が全文表示されます。
  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.3

すでにKURUMITOさんからご回答があり解決済みかと思いますが、補足をお願いした立場からの一例です。 sheet1のd2につぎの式を入力し、縦横に必要数ドラッグ =IF(ISNA(INDEX(INDIRECT("Sheet"&($A2+1)&"!$D$2:$M$51"),MATCH($B2,INDIRECT("Sheet"&($A2+1)&"!$B$2:$B$51"),0),MATCH(D$1,INDIRECT("Sheet"&($A2+1)&"!$D$1:$M$1"),0))),"",INDEX(INDIRECT("Sheet"&($A2+1)&"!$D$2:$M$51"),MATCH($B2,INDIRECT("Sheet"&($A2+1)&"!$B$2:$B$51"),0),MATCH(D$1,INDIRECT("Sheet"&($A2+1)&"!$D$1:$M$1"),0))) 科目数10個、各クラス人員50名まで対応していますので、必要により式の数値等を変更してください。 なお。2007であれば下記のようにIFERROR関数で少しスッキリできるのですが・・ =IFERROR(INDEX(INDIRECT("Sheet"&($A2+1)&"!$D$2:$M$51"),MATCH($B2,INDIRECT("Sheet"&($A2+1)&"!$B$2:$B$51"),0),MATCH(J$1,INDIRECT("Sheet"&($A2+1)&"!$D$1:$M$1"),0)),"") なお、関数式は、この画面からEXCELへコピー貼付ができます。

taa1031
質問者

お礼

ご回答ありがとうございます。 理解するのに少し時間がかかりそうなので 先にお礼だけかかせていただきました。 2007になるとまた違うのですね。 とりあえず2003で試してみます。 本当に助かりました。 ありがとうございました!

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えばシート2やシート3では1行目に項目名があり、A1セルには番号、B1セルには氏名、C1セルから横の列には科目名が並んでいるとします。 そこでシート1ですがお示しの表があるとして、氏名で検索しますと同じ組でも同じ氏名の人がいる場合もありますので、検索にはここでは番号を使うことにします。また、科目についてはX1セルまで使用できることにします。 シート1のD2セルには次の式を入力し、右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR($B2="",D$1="",COUNTIF(INDIRECT("Sheet"&($A2+1)&"!A:A"),$B2)=0,COUNTIF(INDIRECT("Sheet"&($A2+1)&"!1:1"),D$1)=0),"",INDEX(INDIRECT("Sheet"&($A2+1)&"!A:X"),MATCH($B2,INDIRECT("Sheet"&($A2+1)&"!A:A"),0),MATCH(D$1,INDIRECT("Sheet"&($A2+1)&"!1:1"),0)))

taa1031
質問者

お礼

ご回答ありがとうございます。 理解するのに少し時間がかかりそうなので 先にお礼だけかかせていただきました。 試してみます。 本当に助かります。 ありがとうございました!

すると、全ての回答が全文表示されます。
  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.1

補足をお願いします。 sheet2とsheet3のデータは、どの列にどの項目が配列されていますか? 1行目は見出し行で、明細行は2行目以降でしょうか? 読み出した成績は、sheet1のどの列に表示されるのですか?

taa1031
質問者

補足

sheet2には   A列  B列  C列     D列  E列 ・・・ 1 組   番号  氏名     古典  現社 ・・・  2 1   1   青木 優   56   77 3 1   2   池田 洋子  78   66 4 1   3   植村 美紀  80   56 ・ ・ sheet3には   A列  B列  C列     D列  E列  ・・・ 1 組   番号  氏名     現文  世界史 ・・・  2 2   1   佐伯 力   86   77 3 2   2   志垣 洋   58   66 4 2   3   末武 剛   70   86 ・ ・ といった漢字に並んでいます。 クラスによって 教科がまちまちです。 それをsheet1のその名前と科目が交差しているセルに 表示したいのです。 説明がたりなくてすみません。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう