• ベストアンサー

ExcelでVLOOKUPの引数にMID関数を使う?

・Sheet1のA1セルの数値をVLOOKUPの検索値にする ・Sheet1のA1セルの数値が6桁あって、左から2・3・4番目の数値を使う ・Sheet2にVLOOKUPの「範囲」になる表がある 以上の条件のとき =VLOOKUP(MID(A1,2,3),Sheet2!$表のセル範囲$,列,型) という数式を作ったのですが、「NAME#」エラーがでました。 正しい数式を教えていただければ助かります。 よろしくお願いします。

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

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

◆MIDの戻り値は文字列ですが、VLOOKUPの検索列はひょっとして、数値ではないでしょうか? =VLOOKUP(MID(A11,2,3)*1,$B$14:$C$15,2,0)

genie_405
質問者

お礼

maron-5さん さっそくありがとうございました!! なるほど!MIDは文字列操作関数でしたよね… 助かりました。。。 また困った時は相談しに来ますので よろしくお願いします!!

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

>=VLOOKUP(MID(A1,2,3),Sheet2!$表のセル範囲$,列,型) MID(A1,2,3)の戻り値が文字列になるためです。 下記のように、1を乗算してみてください。 =VLOOKUP(MID(A1,2,3)*1,Sheet2!$表のセル範囲$,列,型)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

>=VLOOKUP(MID(A1,2,3),Sheet2!$表のセル範囲$,列,型) ⇒怪しいのは、「Sheet2!$表のセル範囲$,列,型」の部分と思いますが明示されていないので分かりません、補足して下さい。

関連するQ&A

  • excelのvlookup関数で勝手に引用符がつく

    excelのvlookup関数を使ってあるシートを作っています。 「basedata」というシートに3列表をつくり、1番左にキー、2番目と3番目に値をいれ、この表を別シートから検索にいっています。 検索元のシートには 文字列 文字列からMID関数で切り出した数値 検索1 検索2 の4列があります。 やりたいことは2列目の切り出した数値を元にして、basedataのキーを検索しにいき、検索1の列にbasedataの2列目の値を、検索2に3列目の値をいれたいと思っています。 =IF(ISERROR(VLOOKUP(B2,basedata!A2:E56324,2,0))=TRUE,"",VLOOKUP(B2,basedata!A2:E56324,2,0)) という式を検索1のセルに入力した場合、何も表示されず、B2に実際に入っている値を引用符なしで直うちすると値が表示されます。ステップインで分析すると、参照にした場合、参照値が引用符で囲われており、これが原因かと思うのですが、何か回避方法はないでしょうか。

  • MID関数について

    一桁から八桁までの任意の数字を1セルごとに分けたいのですが、MID関数では左から取り出すため桁数が変化すると使えません。 一桁目にMID(A1,1,1)から八桁目にMID(A1、8,1)を入れると1234が4321と逆になってしまいます。 12でも12345678と桁が違っても1セルごとにわけることはできないでしょうか

  • エクセルのVLOOKUP

    エクセルのVLOOKUPで違うシートにあるデータをひっぱりたいのですが シート1のA2~A50まで 20100110~20111011 までランダムに入っています。 この数値は、年月日の 8桁です  (シート1は他人が作ったデータです )シート2のA1~A7まで、8この数値は自分で打ち込みました) 20101001 20111001 20101011 20111001 20110201 20110201 20110301 シート2のB1~B7まで  あ  い  う  え  お  か  き  とはいています。 これをシート1のB2~B50まで B1~B7まで入っている  あ  い  う  お   か  き をひっぱりたいのです。シート1に入っている ですが、VLOOKUPで引っ張っても エラーになってしまいま8ケタの数値をクリックして セルの書式設定でシート1とシート2の8ケタの数値を数値にしても エラーになります エラーになる原因はなんですか?

  • エクセルのVLOOKUP

    エクセルのVLOOKUPで違うシートにあるデータをひっぱりたいのですが シート1のA2~A50まで 20100110~20111011 までランダムに入っています。 この数値は、年月日の 8桁です  (シート1は他人が作ったデータです )シート2のA1~A7まで、8この数値は自分で打ち込みました) 20101001 20111001 20101011 20111001 20110201 20110201 20110301 シート2のB1~B7まで  あ  い  う  え  お  か  き  とはいています。 これをシート1のB2~B50まで B1~B7まで入っている  あ  い  う  お   か  き をひっぱりたいのです。シート1に入っている ですが、VLOOKUPで引っ張っても エラーになってしまいま8ケタの数値をクリックして セルの書式設定でシート1とシート2の8ケタの数値を数値にしても エラーになります エラーになる原因はなんですか?

  • エクセルの関数VLOOKUPについて教えて下さい。

    エクセルの関数VLOOKUPについて教えて下さい。 範囲にあたるデーター部分が3つのかたまりに分かれている時どのような数式で表すことができますか? 具体的には、HIJ KLM OPQの列位置にある3つの表の中から検索したいのです。 作った数式は1つの表から検索するもので =IF(C9="","",IF(ISNA(VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE)),"未登録",VLOOKUP(C9,材料一覧!$H$5:$J$54,2,FALSE))) です。(C9,材料一覧!$H$5:$J$54,2,FALSE)の後に&(同じ数式で列文字を入れ替えて)で繋げてみました。列範囲KLMの表は上手くいったのですが、3つ目のOPQの表は上手くいきませんでした。 原因と正しい数式を教えて下さい。 よろしくお願いいたします。

  • VLOOKUP関数の範囲をセルで指定したいと思っています。

    VLOOKUP関数の範囲をセルで指定したいと思っています。 B1:参照シート名(VLOOKUP関数で使用する範囲があるシート) C2:範囲の開始位置 E2:範囲の終了位置 B3:G3:列番号(B3の値は、B6:B8の範囲で使用する列番号、 D3の値は、D6:D8の範囲で使用する列番号) これらのセルに入力された情報をもとにB6:G8の範囲にVLOOKUP関数を 反映させたいと思っています。 例えば、 B1に参照シート名「2ケタ」 C2にVLOOKUP関数の範囲の開始位置「A5」 E2にVLOOKUP関数の範囲の終了位置「G7」 B3に範囲の列番号「2」がある場合 B6に「=VLOOKUP(A6,'2ケタ'!A5:G7,2,0)の関数を入力。 B2に参照シート名「3ケタ」 C5にVLOOKUP関数の範囲の開始位置「B5」 E2にVLOOKUP関数の範囲の終了位置「H7」 C3に範囲の列番号「3」がある場合 C6に「=VLOOKUP(A6,'3ケタ'!B5:H7,3,0)の関数を入力。 といった感じです。 現在、B6に「=VLOOKUP($A6,INDIRECT($B$1&"!a5:g7"),INDIRECT("$b$3"),0)」と 関数を入力して、VLOOKUP関数の「範囲の参照シート名」と「列番号」の情報は セルから持ってくることができました。 しかし、「a5:g7」という範囲だけは、INDIRECT関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • EXCEL(VLOOKUP関数について)

    8桁の受注番号がありその5桁目が受注内容になっていて 別のシートに数字に対応する受注内容の表があります。 受注内容ごとにまとめたいので MID関数で5桁目を取り出して その取り出した数字を検索値として VLOOKUP関数で受注内容を表示するようにしたいのですが エラーになってしまいます。 範囲である受注内容の表は昇順であることは確認済みです。 このエラーは検索値が計算式であることに関係しますか? これだけの説明ではわかりにくいと思うのですが どなたか状況がお分かりになる方はアドバイスお願いします。

  • MID関数で、「0」を一文字目として認識させたい

    Excel2002で、住所録から封筒を印刷するファイルを作りました。 住所録シートの7桁の郵便番号セルから一文字ずつ取出して 印刷シートの各セルに収めるよう下記の関数を入れています。 =MID(VALUE(VLOOKUP("●",住所録データ範囲,5,TRUE)),1,1) 通常は問題無いのですが、「0」から始まる郵便番号の時は MID関数が「0」を1文字目と認識してくれず、2文字目が 1番先頭のセルに入ってしまいます。 (住所録シートに入っている郵便番号は「'」で文字列認識させています) 何か良い解決方法はありますでしょうか? 宜しくお願い致します。

  • VLOOKUP関数について教えてください。

    たとえば、「定期預金」という文字列をSHEET1から検索すると、セルA5に見つけたとします。 そしてそのセルから、右に3、下に10の位置にあるセル(D15)の数値を、SHEET2に表示させたい場合はどのような計算式を入れればいいのでしょうか? (B5だったらE15の数値というように) またこのような場合、VLOOKUP以外の関数のほうがよければ教えてください。よろしくお願いします。

  • エクセルのVLOOKUP関数について

    エクセルのシート(1)に組合員コード(7桁),氏名,商品,数量・・・が入力してあって、列を挿入し、その組合員コードの左3桁を表示するLEFTの文字列関数を入力します。 それによって3桁が表示され、その3桁のコードは、支店コードを意味するので、シート(2)に支店コード、支店名が入力してあるのでそこから参照するようにシート(1)の3桁が表示されている隣に新たに列を挿入し、シート(2)の支店コードから支店名を引き出すようにVLOOKUP関数を入力したら、「N#A」という表示が出て支店名が表示されません。 LEFT関数によって表示された文字列だと「N#A」で支店名が表示されないのですが、自分で3桁の数字を入力すると支店名が表示されます。 3桁の文字列の結果の値だけをコピーしても、「N#A」が表示され、支店名が表示されません。 文字列関数によって表示された結果から、VLOOKUPで参照は出来ないのでしょうか? 1つずつ自分で数字を入力するしかないのでしょうか? 他に何か別の方法でも構いませんので、教えていただけないでしょうか?

専門家に質問してみよう