- ベストアンサー
VLOOKUP 範囲の複数列指定
vlookupは指定範囲の左側だけを検索しますよね。 そこを、範囲を指定した場所全てを検索して、指定した列の文字を返すことはできますか?別に他の関数を併用した方法でもかまいません。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 範囲をA1:C10として、抽出列をA列としたら次の様な数式でしょうか。 =INDEX(A:A,SUMPRODUCT(($A$1:$C$10=検索値)*ROW($A$1:$A$10))-1,0)
その他の回答 (5)
- pbforce
- ベストアンサー率22% (379/1719)
#1です。 前回の質問とあわせまして、よくご質問の内容を理解せずに回答しました事お詫びいたします、すいませんでした。 で、改めて回答ですが・・・ (1)A列に行を挿入して、 A1に =IF(ISERROR(MATCH(Sheet2!$B$3,B1:D1,0)),0,Sheet2!$B$3) として必要なところまでコピーしてください。 (2)Sheet2のCに =Vlookup(B1,Sheet1!A1:E4,5) としてみればいかがでしょうか? (1)で検索文字を強引に左端にもってきて(2)でVlookupを使用しました。
#4です。 > B列を検索してC列に人の名前を返す 正確には「B列のデータを別シート上で検索してC列に人の名前を返す」です。 「解ったんだから、いいじゃないか」と言われるかも知れませんが、 この辺りを正しく書いておかないと、方向違いの回答が返ってきます。 探したいB列の値が、Sheet1の複数の列にあるので、VLOOKUPは使えませんね。 DGETも特定の列から探すので使えませんし、MATCHも行列なので使えません。 そこで、探したいデータがSheet1だとしたら、C列に =IF(SUMPRODUCT((Sheet1!$A$1:$C$4=Sheet2!B3)*(ROW(Sheet1!$A$1:$C$4)))>0,INDIRECT("Sheet1!C"&SUMPRODUCT((Sheet1!$A$1:$C$4=Sheet2!B3)*(ROW(Sheet1!$A$1:$C$4)))),"") で、如何でしょう。
DGET関数でも出来ます。 A B 1 種類 品名 2 野菜 キ* 3 種類 品名 4 くだもの いちご 5 くだもの キウイ 6 野菜 れんこん 7 野菜 にんじん 8 くだもの りんご 9 野菜 キャベツ 10 野菜 大根 11 野菜 たまねぎ 12 くだもの なし で、=DGET($A$3:$B$12,2,$A$1:$B$2)とすれば 「種類が野菜」で、「品名がキで始まる」行の品名欄にある中身(この例では「キャベツ」)が表示されます。 A2を「くだもの」にすれば、「キウイ」が表示されます。
お礼
すいません。自分が馬鹿なものでなかなか理解できないのですが。 A B C D E 1 梨 柿 苺 山下 2 芋 米 栗 鈴木 3 鳥 馬 羊 松本 4 魚 犬 猫 田中 というシートがあって。 別シートで A B C 1 猫 田中 2 芋 鈴木 3 梨 山下 4 犬 田中 というように、B列を検索してC列に人の名前を返す 例えば「猫」を前のシートから検索して一致する 「田中」の名前を返したいときにでも使えますか?
- mu2011
- ベストアンサー率38% (1910/4994)
NO2です。 数式に誤りがありましたので訂正させて頂きます。 =INDEX(A:A,SUMPRODUCT(($A$1:$C$10=検索値)*ROW($A$1:$A$10)),0)
お礼
ありがとうございます。さっそく試してみます
- pbforce
- ベストアンサー率22% (379/1719)
INDEX関数とMATCH関数の組み合わせでいけませんか?
お礼
何度やっても#NAMEエラーが出るのですが、別シートに返そうとしているのが原因でしょうか?