エクセルVlookup範囲指定について

このQ&Aのポイント
  • エクセルのVlookup関数の範囲指定について質問があります。
  • 範囲指定をパスやファイル名、シート名によって作成した文字列で指定したいと考えています。
  • 指定方法についての助言をいただけないでしょうか?
回答を見る
  • ベストアンサー

エクセル Vlookup 範囲指定について

よろしくお願いします Vlookupの範囲指定を, パスや,ファイル名,シート名により作成した文字列で指定したいと思っています。 これにより,年度末の処理が, シート内のセルを一部変更するだけで毎年対応可能になると思っています。 例えば, 平成24年の4月のツヨさんのB2セルの数字を参照したいときに, セルC3 c:\test\  (ディレクトリ1) セルC4 H24      (ディレクトリ2)←年度で変わります セルC5 \kaikei\   (ディレクトリ3) セルC6 04月.xlsx  (ファイル名)←月で変わります セルC7 ツヨ      (シート名)←人で変わります セルC8 !$A$1:$B$5 (検索範囲) という前提の元, セルC9 ="'" & C3 & C4 & C5 &"["&C6&"]'" & C7& C8 (表示は 'c:\test\H24\kaikei\[04月.xlsx]'ツヨ!$A$1:$B$5) とします。 ここで次の2式を記述します。 セルC20 =VLOOKUP(2,'C:\test\H24\kaikei\[04月.xlsx]ツヨ'!$A$1:$B$5,2,FALSE) セルC21 =VLOOKUP(2,C9,2,FALSE) セルC20は,正しく参照されます。 セルC21は,#N/Aエラーです。 なんとか セルC21のように指定したいと思っているのですが, 良い方法が無いでしょうか? ご教授, よろしくお願いします

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

  • ベストアンサー
回答No.5

>セルC21 =VLOOKUP(2,xxxx(C9),2,FALSE) >というような >なにかxxxxに相当するものがあるのではないかと考えている次第です。 残念ながら、関数では存在しない。 代案として >=VLOOKUP(2,'C:\test\H24\kaikei\[04月.xlsx]ツヨ'!$A$1:$B$5,2,FALSE) を直接書き換える。難しいことはなく、[Ctrl]+[H]置換機能を使えばOK。 例 04月 → 05月 # 置換を間違うと悲惨なので、少ないセルで範囲選択してから試験的に置換するとよい。 ハイパーリンク関数は可変にできるので、クリックしてリンク先を開く作業をするとか =HYPERLINK("C:\test\H24\kaikei\04月.xlsx#ツヨ!$A$1:$B$5","開いてね")

uekinda
質問者

お礼

回答ありがとうございます。 お礼が遅くなりすいません。 また何かありましたらお願いします

その他の回答 (5)

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

>なにかxxxxに相当するものがあるのではないかと そういう関数はありません,と回答しています。 元のご相談: >>セルC4 H24     (ディレクトリ2)←年度で変わります C4にH24と記入したりH25と記入して,関数で参照するブックを変えたいのでしょ?そういうのを「可変に」と言います。 そういう方法はありません,と回答しています。 #余談 同じ事を2度3度繰り返してお話ししないとならないご相談が多くて。。 出来る方法:次のようにすれば,ご相談でヤリタイ事が実際に出来るようになります。 セルには直接参照する式(ご質問のC20の式)を記入しておきます 1)Ctrl+Hで置換のダイアログを出し,C20の式を直接書き換える置換の操作をします 2)ご利用のエクセルのバージョンも不明のご相談ですが,「リンクの編集」でリンク元のブックを付け替えます(推奨) 3)回答でリンクしておいたようなマクロを使います 4)これも回答済みですが,関連するブックから全てのデータを一旦自ブック内に全て受けておいて,INDIRECT関数で可変に参照します 5)回答でリンクしておいた過去ログで回答済みですが,関連するブックを「全て開いておいて」INDIRECT関数で参照します

uekinda
質問者

補足

高所からのご意見ありがとうございます。 あなたが何者か解らないので,”ありません!”という断言に 信憑性はないという前提で,確認と補足を追記しました。 ほんとにないんですか?

回答No.4

何かが違う、、、 C8: $A$1:$B$5 C9: ="'" & C3 & C4 & C5 &"["&C6&"]" & C7&"'!"& C8

uekinda
質問者

お礼

回答ありがとうございます。 上記,ご指摘のとおり間違っていましたね。 ありがとうございます

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

>セルC3 c:\test\  (ディレクトリ1) >セルC4 H24     (ディレクトリ2)←年度で変わります >セルC5 \kaikei\  (ディレクトリ3) しばしば間違った回答が寄せられますが,エクセルの関数では「閉じたブックに対する」参照を可変にする方法はありません。 勿論,INDIRECT関数を使っても出来ません。 ご相談に書かれた事を敢えてその通りに行いたければ,マクロを使う方法しかありません。 最近の同じご相談例: http://okwave.jp/qa/q7820279.html マクロは使えないので関数で何とかしたいのでしたら,関連する「全てのブックの丸ごとデータ」を自ブック内のシート(複数)に丸ごと参照する数式を並べておき,そこからINDIRECT関数を使って計算するような方法で,やればできます。

uekinda
質問者

お礼

回答ありがとうございます。 お礼が遅くなりすいません。 また何かありましたらお願いします

uekinda
質問者

補足

回答ありがとうございます。 >「閉じたブックに対する」参照を可変にする方法 この可変が意味するものがよくわからないのですが, セルC20(直接記述)はOKで, セルC21(参照記述)はNGでありますので, 外部参照ができるできないではなく, 範囲指定の書式の問題かと思っております。 セルC21 =VLOOKUP(2,xxxx(C9),2,FALSE) というような なにかxxxxに相当するものがあるのではないかと考えている次第です。 何かご存じないでしょうか?

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

修正)セルC21:=VLOOKUP(2,INDIRECT(C9),2,FALSE) 関数に関する詳細は、ヘルプを見るなりWEBで検索するなりなさってくださいませ。

uekinda
質問者

お礼

回答ありがとうございます。 残念ながら,indirect関数では, 参照ファイルが閉じていると参照不可なので使えませんでした。 また何かありましたらお願いします

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ヘルプでindirect関数を検索すると良いですよ

uekinda
質問者

お礼

回答ありがとうございます。 残念ながら,indirect関数では, 参照ファイルが閉じていると参照不可なので使えませんでした。 また何かありましたらお願いします

関連するQ&A

  • 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のMATCH関数の検査範囲の指定について

    Excelで、指定した値の場所(行番号)を返すというのをMATCH関数を用いてやっているのですが、検査範囲の指定が上手く処理することができないので教えて下さい。 条件---------------------------------------------------------------------------------------------------------------- 2つのExcelファイル、DATA.xlsx と TEST.xlsx を用いる。 DATA.xlsx内に「B19」というシートが存在し、このシート内のB列にある"7777"という値が存在する行番号をTEST.xlsx内のセルに表示させる。 ----------------------------------------------------------------------------------------------------------------------- まず、 =MATCH(7777,[DATA.xlsx]B19!$B:$B,0) で正しい値が返ってくることは理解しています。 この式の中の、B19というシート名について、 この式が存在するシートと同じシートの適当なセル(ここではA33を使うことにします)にB19 という値が存在するとします。このA33のセルにある値を見て値を返す、何がしたいかといいますと、将来参照するシートがB19ではなく例えばB15であったり、B6とした場合、A33のセルの値を変更すればよいというものにしたいのです。 それで、 =MATCH(7777,"[TEST.xlsx]"&$A33&"!$B:$B",0) としてみたのですが、#VALUE!が返ってきます。 何処が間違っているのか?教えてください。 よろしくお願いします。

  • エクセルのVLOOKUPに関して

    お世話になっております。 VLOOKUP関数になるのか他の関数になるのか分からないのですが ご教授よろしくお願い致します。 A1セル      A2セル      A3セル 店番号      商品名       担当 1         ア          山口 2         イ          大山 3         ウ          斎藤 1         エ          中村 1         オ          山口 上記のような情報がシート1にあり、 シート2のA1セルに店番号を入力した時に シート2のB列に同じ店番号を持つ商品名をB1、B2、B3...セルへとリスト化し、 C列に担当をC1、C2、C3...セルへとリスト化したいのですが、 どのような関数を使用すれば可能となりますでしょうか。 よろしくお願い致します。

  • エクセル VLOOKUPとの複合?

    Sheet2に顧客名簿があり、 A:顧客名 B:住所と入っています。 Sheet1には B4:B34とH4:H34に顧客名が入り、 C4:C34とI4:I34にそれぞれVLOOKUPで住所が転記される仕組みになっています。 しかし、顧客数が膨大(1万件前後)なため、顧客名を間違えることが多々あり、転記されない場合が多いです。 なんとか、これを解消したいのですが、何か良い方法はありませんか? ・例えばABCが含まれる顧客を検索ボックスなどから選択をして転記 情報がかなり不足していて申し訳ありませんが、よろしくお願いします。

  • VLOOKUPのセル範囲指定

    VLOOKUP(検索値,セル範囲,列番号,検索型) のうち、セル範囲を別の色々なワークシート上のセル範囲として指定したい と思っています。 ワークシート名を書いたセルをT()で参照すればできるかと思ったのですが、 エラーになってしまいました。ワークシートが少数であればIFをつかって 場合わけをしても良いのですが、そこそこ数がある上にこれから増えるかも しれないので、どうにかワークシート名を簡単に変更・指定できる方法が ないか悩んでいます。 なにか知恵があれば教えてください。 よろしくお願いします。

  • エクセル関数VLOOKUPの範囲の一部をセルで指定

    ファイル名2103.XLSあるとして、その2103.XLSファイルとは別のファイル名集計.XLSに、その2103.XLSファイルから関数VLOOKUPでデータの値を返したい場合、式の範囲には普通は [2103.xls]Sheet1!$A$1:$B$10 と入力されますが、この範囲の一部分をセルで指定できないでしょうか。例えば、ファイル名集計.XLSのA1セルに文字列で"2103"と入力されているとしまして、式の範囲 [2103.xls]Sheet1!$A$1:$B$10 の2103部分を[A1.xls]Sheet1!$A$1:$B$10のような式は出来ないでしょうか。

  • VLOOKUP関数の「検索値」を範囲で指定する

    エクセルのVLOOKUP関数で、通常は検索値は一意のものを指定しますが、範囲指定しているケースがありびっくりしてしまいました。これはどのようなことなのでしょうか?   A   B 1 品名  単価 2 もも  200 3 りんご 150 4 みかん 100 5 なし   80 とあり、   C   D  1 品名  単価 2 なし 3 もも 4 みかん C列に入れた検索値で、上の表から単価を検索する場合、 通常 =VLOOKUP(C2,$A$2:$B$5,2,FALSE)といった感じで D2のセルに打ち込み、D2のセルの場合は、「検索値はC2」と固定している思うのですが、 =VLOOKUP($C$2:$C$4,A2:B5,2,FALSE)でも 同じ結果になっています。もちろんこれをそのままD4までコピーしても求める通りの結果が出てきます。 検索値は、式においては必ずしも一意で指定する必要はないのでしょうか?

  • 式だけのセルを範囲指定から除外したい

    Excel365 windows10 使用の超初心者です。 (1) マクロ記載用A.xlsm データ用のB.xlsx C.xlsxでマクロ作成中です。 (2) データ用ブックのB.xlsx には、DシートとEシート(他に40枚)があります。 (3) Dシートには表には、B4からB33まで(4月21日から5月20日までの30個)のデータがあります。 (4)このデータを、行列を入れ替えてEシートの表に持っていきたいです。 (5)上のデータを貼りつけると時間かかる(=自分はそう思っている。)ので Eシートの表には最初から31個のセルに、=VLOOKUP(A58,計算データ,2,FALSE)関数が入れてあります。 (6)なのでDシートのデータが変わると、すぐにEシートの表も同時に変更されます。 (7)いまEシートを見ると、4月は30日しかないので、5月20日までは表示されていますが、次行のセルには関数式だけで、何も表示されていません。 (8)やりたいことは、この日付が4月21日~5月20日の行までを選択したいです。 (9)CurrentRegionでは、式だけの空欄の所も範囲指定されてしまいます。 何時間も試行錯誤しましたがお手上げです。よろしくお願いします。

  • VLOOKUPの範囲指定

    同じことを以前にお聞きしたのですが質問の仕方が分かりにくく解答を下さった 皆様にご迷惑をおかけしました。 今回は画像を添付いたしました。以下の疑問にアドバイスをいただければ幸いです。 なお、マクロを作る関係上、セルの指定をR1C1参照形式にしております。 管理.cells(7,5)に番号を入力すると該当クラスのその番号の生徒氏名が表示されるように、 管理.cells(7,6)にVLOOKUP関数を入れたいのですが、クラスごと別のシートのため、範囲指定が うまくいきません。 以前質問した時に何人かの方に教えていただいたINDIRECT関数を使ってもうまくいきませんでした。 シート名(クラス名)を変数として範囲を指定できないでしょうか。 教えていただければ大変助かります。 よろしくお願いいたします。

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

    エクセルのVLOOKUP関数を使用しての集計に関する質問です。 以下の例のような場合の関数が分からず本当に困っております。 どなたかご享受いただけたら幸いです。 よろしくお願いいたします。 毎月サポート費としてお客様ごとに定額が振り替えられ、その集計表を作成しております。 その際振替に使用するプランが2パターンあり、その月どちらのプランになるかは月によってまちまちです。 (同じお客様でも3月はパターン1、4月はパターン2だったりします。) また、振替日は使用するパターンによって異なります。 SHEET1に、 A列 B列 C列 D列 顧客名 金額 振替日 パターン名 という表があり顧客ごとの過去2年分の振替履歴が、1000レコード程並んでいます。 SHEET2でSHEET1の月ごとの集計を出そうと考えております。 表自体は月ごとに分けて作成したいので、表の上部に該当期間をつけます。下記のような感じです。 B2セル C2セル D2セル ○月 開始日 末日 (ex2月) (ex.11/2/1) (ex.11/2/28) A列:顧客名 B列:パターン名 C列:振替日 D列:金額 と並べ、顧客名ごとに、その月のパターン名・振替日・金額を集計したいです。 金額に関しては、SUMIFS関数、振替日に関しては使用パターンさえ出せれば、IF関数で出せると考えています。 パターン名のところでつまづいてしまっています。 行いたいこととしては、SHEET1のA列からD列(顧客名からパターン名まで)の範囲で、顧客名が一致したときに、振替日を抜き取り、振替日がC2(月初日)より大きく、かつD2(月末日)より小さいときのパターン名を表示させたいです。 (1)---------------------------------------------------- =IF(VLOOKUP(A3,sheet1!$A$2:$D$1000,3,FALSE)>$C$2,IF(VLOOKUP(A3,sheet1!$A$2:$D$1000,3,FALSE)<$D$2,(VLOOKUP(A3,sheet1!$A$2:$D$1000,4,FALSE)),"")) といれると、表示されるきちんとパターン名が表示されるセルと空白が返ってきてしまうセルがあります。 空白が返ってきてしまうセルは、双方の顧客名の最後の1文字を消す、スペースを入れる、など何かしら手を加えるときちんと表示されます。 ------------------------------------------------------ その他、VLOOKUP関数、IF関数、ISNA関数などを組み合わせて色々と試してみましたが期間がうまく指定出来ていないようで、当月に振替履歴のない顧客の欄にもパターンが返ってきてしまいます。 下記を教えていただきたいです。 (1)(1)のような状態になる理由と解決法 (2)この場合に使用するのに最適な式 説明が長くなり、またうまく状況を説明できず申し訳ございません。 本当に困っています。ご回答よろしくお願いいたします。

専門家に質問してみよう