エクセルで複数列を検索し左3列目を返す方法

このQ&Aのポイント
  • エクセルのシート内の複数列から、指定した条件に合致するセルを検索し、その左隣の3列目のセルを返す関数を作成したいです。
  • 検索結果を別のシートに表示し、検索条件をA列に入力し、結果をB列に表示したいです。
  • 複数の検索対象シートに対応することも考慮しています。該当するセルがない場合は空欄としたいです。
回答を見る
  • ベストアンサー

エクセル 複数列を検索し左3列目を返す

よろしくお願いします。 シート1の5列(E,J,O,T,Y)の中から,該当するセルを検索,該当セルの左隣3列目のセルを返す関数を考えています。検索条件の重複はありません。 検索結果を表示するシートをシート1とは別に作成します。 A列に検索条件を入力し,B列に結果を返したいです。 例シート1   A  B   C   D   E    F  G   H    I     J   ・・・・・   ID 品名 項目 単価 1年目 ID2 2品名 2項目 3単価 2年目 ・・・・・ 1 1  a   b   c    1-1   e    f    g   h   1-11 2 2  i    j   k     2-2  m    n    o   p   2-22  検索結果   A   B 1 1-1  a 2 2-22  n このような感じのファイルになっています。IFやLOOKUPなどを試しましたが,複数列をうまく検索する関数を作成することができませんでした。 また,検索対象となるシートが複数になる可能性もあり,その際にも対応できるとありがたいです。 よろしくお願いいたします。

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

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

>日付 それならそうと最初から情報提供を。 数値を参照してきたいなら =IFERROR(INDEX(Sheet1!B:B,MATCH(A1,Sheet1!E:E,0)),0) +IFERROR(INDEX(Sheet1!G:G,MATCH(A1,Sheet1!J:J,0)),0) + …以下同文 セルの書式はもちろん日付等適切に。

ichioi
質問者

補足

回答ありがとうございました。説明不足で申し訳ありません。 上手く作成することができました。ありがとうございました。

その他の回答 (3)

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

難しい関数を使うことで計算に負担がかかります。 簡単な式で対応するには作業列を作って対応します。 シート1の2行目から下方にデータがあるとしてZ2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTA(E2,J2,O2,Y2)=0,"",E2&"/"&J2&"/"&O2&"/"&T2&"/"&Y2) 結果はシート2に表示させるとしてA2セルから下方に検索の文字を入力するとすればB2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",INDEX(Sheet1!A:Y,MATCH("*"&A2&"*",Sheet1!Z:Z,0),MATCH(A2,INDEX(Sheet1!A:A,MATCH("*"&A2&"*",Sheet1!Z:Z,0)):INDEX(Sheet1!Y:Y,MATCH("*"&A2&"*",Sheet1!Z:Z,0)),0)-3)) シート3にシート1と同じような表があるとしたらシート3のZ2セルにはシート1と同じ式を入力して下方にドラッグコピーします。 まとめのシート2ではB2セルには次の式を入力して下方にドラッグコピーすればよいでしょう。 =IF(A2="","",IFERROR(INDEX(Sheet1!A:Y,MATCH("*"&A2&"*",Sheet1!Z:Z,0),MATCH(A2,INDEX(Sheet1!A:A,MATCH("*"&A2&"*",Sheet1!Z:Z,0)):INDEX(Sheet1!Y:Y,MATCH("*"&A2&"*",Sheet1!Z:Z,0)),0)-3),"")&IFERROR(INDEX(Sheet3!A:Y,MATCH("*"&A2&"*",Sheet3!Z:Z,0),MATCH(A2,INDEX(Sheet3!A:A,MATCH("*"&A2&"*",Sheet3!Z:Z,0)):INDEX(Sheet3!Y:Y,MATCH("*"&A2&"*",Sheet3!Z:Z,0)),0)-3),""))

ichioi
質問者

お礼

回答ありがとうございました。 長文の関数に驚きましたが,よく考えると,納得しました。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

B1=INDEX(Sheet1!$A:$J,SUMPRODUCT((Sheet1!$A$1:$Z$10=A1)*ROW($A$1:$A$10)),SUMPRODUCT((Sheet1!A1:Z10=A1)*COLUMN($A$1:$Z$1))-3) ★下にコピー

ichioi
質問者

補足

回答ありがとうございます。 早速使ってみました。1行目は上手くいったのですが,コピーした2行目以降が「♯N/A」となりました。 関数中のSheet1!A1:Z10をSheet!$A$1:$Z$10に修正したのですが,よろしいでしょうか? また,同様の質問ですが,参照先が日付の場合に,おそらくシリアル値と思われる数値になります。 書式設定でも日付表示になりませんでした。どのように対処したら良いのか,ご教授お願いいたします。

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

ご利用のエクセルのバージョンが不明ですが、仮にExcel2007以降を使っているなら =IFERROR(INDEX(Sheet1!B:B,MATCH(A1,Sheet1!E:E,0)),"") &IFERROR(INDEX(Sheet1!G:G,MATCH(A1,Sheet1!J:J,0)),"") & …以下同文 Excel2003以前を使っているなら =IF(COUNTIF(Sheet1!E:E,A1),INDEX(Sheet1!B:B,MATCH(A1,Sheet1!E:E,0)),"") =IF(COUNTIF(Sheet1!J:J,A1),INDEX(Sheet1!G:G,MATCH(A1,Sheet1!J:J,0)),"") & …以下同文 などのように、順序良く探していけば出来ます。 #参考 状況によりますが =INDIRECT("Sheet1!"&TEXT(SUMPRODUCT((Sheet1!$A$1:$Y$10=A1)*ROW(Sheet1!$A$1:$Y$10)*100+(Sheet1!$A$1:$Y$10=A1)*(COLUMN(Sheet1!$A$1:$Y$10)-3)),"!R0!C00"),FALSE) などのようにしても計算できるかもしれません。 >複数のシート 最初に回答した数式のバリエーションで出来ます。

ichioi
質問者

補足

回答ありがとうございます。 エクセル2007を使用しています。 1番目の関数を実行したところ,思った通りの結果が返されました。 ただ,参照先のセルが日付の場合,おそらくシリアル値と思われる数字が返ります。 セルの書式を日付にしても変更されませんでした。 どのように対処したらよいでしょうか? ご教授よろしくお願いいたします。

関連するQ&A

  • Excel 複数列からの検索

    Excel 複数列からの検索 シート1のB列に入力された文字と同じものを、シート2のA~B列より検索し、一致する文字があれば、シート1A列に「○」を表示させたいと思っています。(ない場合は空欄で対応したい) <シート1>   A  B 1 ○ みかん 2    りんご 3 ○ バナナ <シート2>   A    B 1 みかん メロン 2 かき   パイナップル 3 なし  バナナ VLOOKUPを駆使してで頑張ったものの複数列が壁で無理でした。 何かいい解決法はありますでしょうか。 ちなみに。シート2のA列・B列は文字ではなく関数で得られた結果です。 参考→「=IF(ISERROR('シート名'!$B26:$B26),"",'シート名'!$B26:$B26)」 よろしくお願いいたします。

  • エクセルの複数列(1組2列x5組)の検索について教えてください。

    エクセルの複数列(1組2列x5組)の検索について教えてください。 A列に品名、B列にその金額があり、この2列を1組として5組(計10列)あります。 A6のセルに品名を入力するとA7列にその金額を表示させたいのですが、 どのようにしたらいいですか? vlookupをifの階層で判断しないとダメなのでしょうか?   A   B   C   D   E   F   G   H   I   J 1みかん 50  大根  100 さんま 50  とり肉 50  ビール 200 2りんご 100 人参  80  サバ  200 ぶた肉 100 コーラ 100 3メロン 500 なす  50  鯛   800 牛肉  300 ワイン 500 4 5 6ぶた肉 100

  • エクセルのデータ検索について・・・

    はじめまして。 みなさまのお力が借りたく、質問いたします。 わかりずらい質問だとは思いますが、宜しくお願い致します。 例として、エクセルのファイルが2個あるとします。 A.xls B.xls とします。 AにはIDを入力するシートが1枚 BにはそのIDの人の名前・住所・生年月日などを規則性無く入れてあるシートが7枚程あるとします。 AのID列に「10」といれると Bの全7枚のシートの中から該当する人のデータを抜き出し、 Aの所定のセルに表示する。といった事は可能でしょうか? VLOOKUP関数を使ってみたのですが、検索するシートを1枚じゃないとダメみたいで・・・ シートを複数指定するとエラーになってしまいます。 問題は、抜き出したい「ID 10」が7枚のシートの中の何枚目にあるかがわからないのです。 ちなみに、該当する「ID 10」があるシートには必ず名前、住所、生年月日も同じ列に付随して存在します! このようなことは不可能なのでしょうか? もし可能ならばどうしたらいいか教えてください! 宜しくお願い致します。

  • SUMPRODUCT関数で複数条件適用されない

    Sheet1 A列:日付 B列:注文番号 C列:品名 D列:整理番号 E列:数量 集計 A列:品名 B~AF列:日付(1~31日) 【集計】B~AF列の日付、A列の品名が 【Sheet1】A列の日付、C列の品名と一致したら 【Sheet1】E列の数量を【集計】の該当するセルに抽出する 式をSUMPRODUCT関数で作成しました。 例)10/1 りんご 20 【集計】B3セルに以下の数式を入れましたが なぜか数量が「0」のままになります。 =SUMPRODUCT('Sheet1'!$A$3:$A$200='集計'!B$2)*('Sheet1'!$C$3:$C$200="りん ご")*('Sheet1'!$E$3:$E$200) 特に数式のミスはないと思うのですが どうしても正しい値が入りません。 数式に間違いがあればご指摘いただけませんでしょうか。 また、他に良き方法があればご教示いただけるとありがたいです。

  • 複数セルから文字列を検索して・・・

    どう検索していいのかわからなかったので質問します。 複数のセルから特定の文字列を検索して、該当したセルに対応するB列の数字の合計を関数によって出したいです。 例えば画像を例にすると、A列で"()"という文字列が入っているセルがいくつかあります。 これらのセルに対応するB列の数字の合計を出したいです。 "()"は必ず文字列の末尾にくることとします。 回答よろしくお願いします。

  • Excel 複数セルから文字列の検索、表示

    エクセル初心者です。 過去のものを探しては見ましたが、うまくキーワードを見つけられなかったので 質問させてください。 リストで次のようなものがあるとします。  A   B  C  D  E  F  G 1○ 12 45 - 98 - 2■ - - 12 - 06 3◇ 35 12 01 99 - 4× - - - - 12 5☆ 08 61 20 12 - このリストで各行ごとにB~F列のセルにある「1」で始まる文字列を検索して 該当する文字列をG列に表示する方法はありますでしょうか? 関数とかVBAについては???なので、わかり易くお教え頂けると助かります。 よろしくお願いいたします。

  • excelで文字列を検索する関数を教えてください。

    いつもお世話になります。 エクセルの関数で、シートAのセルA1に入っている文字列をシートBのC列から探し出し、同じ文字列があればTrueをなければFalseを返す関数を教えてください。 わからないながらも色々調べてみたのですが、検索にはVLOOKUPがよく使われているようですが、シートBのC列は、データの並べ替えができないので、VLOOKUPは、使えないのです。 よろしくお願いします。

  • エクセルで複数sumifの検索範囲の連動

    画像のように太線での区切りごとの合計金額を算出したいと思います。 一旦品名ごとに お菓子Aは100円 お菓子Bは20円 ガムは… と小計を算出してから、ワンクッションおいてそれらを合計してもいいのですが、 紙面のスペースの関係上1セルで合計したいと思います。そこでD列のセルには =SUMIF(A2:A5,$A$16,B2:B5)*$B$16+SUMIF(A2:A5,$A$17,B2:B5)*$B$17+   以下略 =お菓子Aの数量*お菓子Aの単価+お菓子Bの数量*お菓子Bの単価   以下略 とSUMIFで品名ごとに数量を合計してから*その品の単価を足していきたいと思います。 そうするとこの場合一つのセルにSUMIFが四回使われ、検索範囲の設定が面倒です。 1セル中の全てのSUMIFの検索範囲を統一する便利な方法はないでしょうか。 或いは別の関数を使ったまったく異なる方法でも構いません。 どなたかご教授いただければ。

  • エクセルのデータ抽出で列が飛び飛びなんですが

    仕事でエクセルを使い始めた初心者です。 シート1に B    D    E     G       K    L   ←列番号 品名 型番 メーカー 数量 ~~ 発注先 単価 ~~ ○○ △△ ××    5  ~~ ◎◎◎ 100 ~~ ●● ▽▽ ××    3  ~~ ■■■ 500 ~~ ∵∵ □□ ▲▲    1  ~~ ◎◎◎ 400 ~~ といった感じで何百件もデータを入力してありまして これをシート2で 発注先 ◎◎ ←ここに発注先名をいれる A    D    H     J    L 品名 型番 メーカー 数量 単価 ○○ △△ ××    5  100 ∵∵ □□ ▲▲    1  400 こうやって必要なところだけを抽出させたいのですが 範囲の指定の仕方がわかりません。 VLOOKUPだと一つ一つ入力しないといけなそうですし AdvancedFilterだと飛び飛びの列の指定の仕方がよくわからないのです。 列番号が飛んでるのは、セルの結合などが多々まぎれてるからです。 どんな構文をかけばいいんでしょうか?

  • エクセルで複数文字を検索する方法を教えてください。

    お世話になります。 エクセルで、関数を使用して、複数文字を検索する方法を教えてください。 具体的には、エクセルシートが2つあり(sheet1の名前は「姓名」、sheet2の名前は「該当」とします) sheet1(姓名)のA列に名前を入力して、sheet2(該当)のA列には、漢字600個を1文字ずつ縦に 並べたとします。(漢字600個は勿論全部違う漢字です) そこで、sheet1(名前)のA列に入力されている名前に対して、B列に関数を入れて、 sheet2(該当)のA列に該当する漢字があった場合は「当たり」と表示して、該当する漢字が 無い場合は空欄にする関数を教えていただけないでしょうか。 EXCEL2003になります。 よろしくお願いいたします。

専門家に質問してみよう