• ベストアンサー

VLOOKUPの範囲と参照を可変にするには?

EXCEL2010です。 以下の数式があって、矢印の20000と8を可変にしたいのです。 VLOOKUP($A3,DB!$A$3:$AC$20000,8,0)          ↑  ↑  具体的には、セルC1,C2に入力された数値が使用されるようにしたいのです。 (C1に20000、C2に8が入力されている場合、上記の式と同じ結果になるように) indirectを使用したり試行錯誤しましたが、上手く行きませんでした。 よろしくお願いします。

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

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

こんばんは! C1セルを可変にしてもあまり意味がないように思えますが・・・ どうしても!というコトであれば =VLOOKUP($A3,INDIRECT("DB!$A$3:$AC$"&C$1),C$2,0) こんな感じではどうでしょうか?m(_ _)m

7skies
質問者

お礼

早速の御回答ありがとうございます。 ばっちりできました。 INDIRECTを使うところまではあっていたんですね。 こういった使い方をするのかと勉強になりました。 ありがとうございました。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

VLOOKUP($A3,DB!$A$3:INDEX(DB!$AC:$AC,INT($C$1)),INT($C$2),0) の様にされると良いと思います。  尚、C2に入力した値がA列~AC列の範囲に含まれる列数を上回る事もあり得る場合には、次の様にされると良いと思います。 VLOOKUP($A3,OFFSET(DB!$A$3,,,INT($C$1)-row(DB!$A$3)+1,INT($C$2)),INT($C$2),0) 或いは VLOOKUP($A3,DB!$A$3:INDIRECT("DB!R"&INT($C$1)&"C"&INT($C$2)+COLUMN(DB!$A$3),FALSE),INT($C$2),0)

7skies
質問者

お礼

早速の御回答ありがとうございます。 INDEX関数も勉強してみます。 先に御回答いただいた方をベストアンサーにさせていただきました。

関連するQ&A

  • VLOOKUPでエラー表示と0表示を無くしたい

    VLOOKUPで下の条件にあった数式を作りたいのですが、うまくいきません。 条件は (1)参照先のセルが数値のため0が表示されるが、0と空白は区別したいので、戻り値が空白の場合は0を表示させない。 (2)参照元のシートには参照先には無いコードがあるので、エラー(#N/A)が出てしまうがエラーも表示させない。 作ってみた数式は =IF(OR(VLOOKUP(B1,入力!$B$1:$C$6,2,FALSE)="",ISERROR(VLOOKUP(B1,入力!$B$1:$C$6,2,FALSE))),"",VLOOKUP(B1,入力!$B$1:$C$6,2,FALSE)) です。 戻り値が空白、またはエラーの時に参照先のセルが空白になるように作ったつもりですが、どうしてもエラー(#N/A)が出てしまいます。 どなたかアドバイスいただければ嬉しいです。 よろしくお願いいたします。

  • VLOOKUPで求めた数値をさらにVLOOKUPで

    エクセル2010を使用しています。 VLOOKUPで求めた数値をさらにVLOOKUPの検索値にしたいです。 Sheet1のB2のセルにIDを入力したら Sheet2のA1からAL500の中のデータから 自動でSheet1のC2からF2まで値が入るように VLOOKUPを使用して表を作りました。 Sheet1のF2には、その会員の紹介をしてくれた別の方のIDが 自動で反映されるんですが さらにF2に反映されたIDをもとに G2にSheet2の中からデータを拾い出すことは不可能なのでしょうか? 何度やってもエラーになってしまいます。 表の上ではF2には、紹介者のIDが反映されているのですが 実際には数式がはいっているので 検索値としては使用出来ないのでしょうか? もし可能な方法があれば教えてもらえれば助かります。 お願いします。

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

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

  • エクセル関数 Vlookupと配列数式(とsumif)の違い、利点不利点

    以下のような設定でvlookupと配列数式とifを組み合わせた場合の結果が異なる(ことがある?)んですが、原因を教えていただけないでしょうか。あと、配列数式のここが便利!(このvlookupの類似機能に限ったことではない)というものがあれば付随して教えてくださると助かります。 A1:A3 に順に1,2,3と(参照される側の)インデックスが入力されている。 B1:B3 はa,b,cと文字が入力されている C1:C3 には2,2,3と(参照する側の)インデックスが入力されている。 C列のインデックスにより、A列のインデックスに対応するB列の文字列を引いてきたいとき、普通はvlookupで、 <セルD1>=vlookup(C1,A1:B3,2,0)などとすると思います。 これを配列数式を用いて、 <セルD1:D3>= if(C1:C3=A1:A3,B1:B3,0) として同じことをしようとしても、何故かD1セルのみ=0となってしまいます。何故でしょうか?配列数式にそれほどくわしくありませんが、利用価値が非常に高そうなのでわからないことを解明したいのです。 (sumifもタイトルにいれたのは、B1:B3が文字列ではなく数値ならば、同じことをsumifで表現できるから、それだけの理由です) 宜しくお願いします。

  • vlookupからさらに発展させたセルの参照方法

    今A1をリスト化したセルとして、 B1=vlookup(A1,A10:Z100,2) が入力されており、B20の値が返されたとします ここでB1の下にあるB2にB21の値を返すためにはどのような数式を入力すればよいのでしょうか? あくまでA1を参照して値を返したいと思ってます よい方法があればどなたかご教授お願いいたします

  • 関数で求めた2つのセル範囲内の、平均値を出したい。

    日の出から日の入までの範囲の平均温度を求めたいのですが、日の出時刻と日の入り時間はVLOOKUP関数によって求めています。 A列に時刻、B列に温度が並んでいます。 求めた時刻が例えば、日の出6:00(セル番号 A360)、日の入18:00(セル番号 A1080)となっている場合。 当然ながら、=AVERAGE(A360:A1080)と入力すれば可能ですが、 =AVERAGE(VLOOKUP関数数式:VLOOKUP関数数式)はエラーとなります。 =AVERAGE(VLOOKUP関数数式,VLOOKUP関数数式)は2点のみの平均温度となってしまいます。 どのような方法で解決できるでしょうか? あるようで見つからないのですが、指定した範囲内に一致する数値があった場合にそのセル番号を返すような数式はあるのでしょうか?

  • 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関数をうまく入れることができません。 どのように関数を入力したら、上手くいくのか、教えていただけないでしょうか。

  • VLOOKUP式の範囲の部分に他のセルから入れ込みたい

    B列に=VLOOKUP($A1,'18-1'!$B$5:$N$80,4,FALSE)) という数式があってA列の値で18-1シートを検索してVLOOKUPすることになっています。 そして18-1の部分は18-2、18-3、18-4…と変わっていくんですがC列に範囲の'18-1'!$B$5:$N$80の部分を入力してB列の数式に入れ込むことは出来るでしょうか? =VLOOKUP($A1,?????????,4,FALSE)) このような感じで…

  • こんにちは。VLOOKUP関数の引数で「範囲」を選択するとき、他のパス

    こんにちは。VLOOKUP関数の引数で「範囲」を選択するとき、他のパスにあるファイルの参照の仕方についてお尋ねします。 例えば、VLOOKUP関数を使って以下のパスにあるファイルを参照するとします。 ▼パス        :C:\作業 ▼フォルダ名     :作業 ▼ファイル名     :参照先.xls ▼参照するシート名:シート1 関数を入力して保存して再び開くと、このようになります。 =VLOOKUP(A1,'C:\作業\ [参照先.xls]シート1'!$A$2:$F$10,3,FALSE) このパス・ファイル名・シート名をどこかのセルに入力しておき、参照先のフォルダが変わったとしても「パス」を入力するセルの値を変えることで、可変的に参照できるようにしたいと思っています。 例えばA10のセルで、範囲の引数である文字列を <A10のセルの値>'C:\作業\ [参照先.xls]シート1'!$A$2:$F$10 というようにつなげて作成し、 =VLOOKUP(A1,A10,3,FALSE) とやってみましたが参照できるわけもなく、うまい方法はないかなと悩み中です。 わかる方からの回答をお待ちしています。

  • VLOOKUPで困っています。

    VLOOKUPで困っています。 検索値に使用したいセルは、MID関数を使用して検索した4ケタのコードです。 #N/Aがでてしまうので、検索したセルの隣に値をコピーして検索値にしても "1555"のような""が出ていて、できません。  直接入力した数値1555からは検索できるので、範囲などの指定も間違っていません。 基本的なことかも知れませんが、初心者で困っています。 よろしくお願いします。

専門家に質問してみよう