• ベストアンサー

エクセル 関数でセルの位置を&で指定したい

セルの位置を&を使って指定したいのですが出来ません。 何か方法はないですか? (例) 同じフォルダに入っているファイル名「商品番号01」~ファイル名「商品番号99」のA1のセルを表示したい。 商品番号を1つ1つ入力は手間なのでA列にある商品番号を & を使って結びつける。 これでは正しく表示されない。    A列  B列 1行 01  ="'[商品"&A1&".xlsx]sheet'!$A$1" 2行 05  ="'[商品"&A2&".xlsx]sheet'!$A$1" 3行 09  ="'[商品"&A3&".xlsx]sheet'!$A$1"  ・  ・  ・  ・  ・  ・

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

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

 INDIRECT関数で参照先を指定した場合には、必ず絶対参照となりますから、「$」は必要ありません。  ですから、B1セルに入力する数式は =INDIRECT("'[商品番号"&A1&".xlsx]Sheet1'!A1") になります。  それから、セルの書式設定が文字列以外の書式となっている場合には、セルに 01 02 03 ・ ・ ・ 09 と入力しても、自動的に 1 2 3 ・ ・ ・ 9 に変換されてしまいますので、そのままでは '[商品01.xlsx]sheet'!A1 '[商品02.xlsx]sheet'!A1 '[商品03.xlsx]sheet'!A1 ・ ・ ・ '[商品09.xlsx]sheet'!A1 ではなく、 '[商品1.xlsx]sheet'!A1 '[商品2.xlsx]sheet'!A1 '[商品3.xlsx]sheet'!A1 ・ ・ ・ '[商品9.xlsx]sheet'!A1 となってしまい、存在しないファイルを参照しようとして、エラーとなってしまいます。  ですから、入力する前に、A列のセルの書式設定を、前もって[文字列]に変更しておいた方が良いと思います。

benitier59
質問者

お礼

INDIRECTで解決しました。 このような関数があるとは知りませんでした。

その他の回答 (3)

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

ファイル名が商品番号となっているのでしたら当然のこととして式は次のようになりますね。 B1セルに次の式を入力して下方にオートフィルドラッグします。 =INDIRECT("'[商品番号"&A1&".xlsx]Sheet1'!$A$1")

benitier59
質問者

お礼

INDIRECTで解決しました。 このような関数があるとは知りませんでした。

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

INDIRECT関数にしてSheet1ならその通りに入力することが必要ですね。 1行 01  =INDIRECT("'[商品"&A1&".xlsx]Sheet1'!$A$1") 2行 05  =INDIRECT("'[商品"&A2&".xlsx]Sheet1'!$A$1") 3行 09  =INDIRECT("'[商品"&A3&".xlsx]Sheet1'!$A$1")

benitier59
質問者

お礼

INDIRECTで解決しました。 このような関数があるとは知りませんでした。

回答No.1

一方通行というかA列の反映は最初だけですが B1セル ="='[商品"&A1&".xlsx]sheet'!$A$1" 下へオートフィル B列コピー 形式を選択して貼り付け ●値 B列を選択して 置換 = → = (イコール から イコールへ置き換えることで計算が有効になる)

benitier59
質問者

お礼

INDIRECTで解決しました。

関連するQ&A

  • 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!が返ってきます。 何処が間違っているのか?教えてください。 よろしくお願いします。

  • 指定したセルの位置の取得について教えてください

    例えば、5と書いてあるセルの行番号と列番号の位置を自動で表示する関数を下の水色に使いたいのですがどうしたらいいのか教えてください。

  • エクセルでセルが指定できない

    エクセルでワークシート上のセルをクリックしてもセルポインタが出なく、文字や数値の編集が出来ないものを先日見ました。列番号や行番号をクリックしても範囲指定がかかりません。この設定はどうすれば良いのでしょうか?

  • 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 セル参照で参照ブック指定

    指定したセルに拡張子を抜いたブック名を入力し、そのセルを参照してブック参照することは可能でしょか? 「INDIRECT」では参照ブックを開かないと表示されないため目的が達成されません。 (例) Book1.xlsx A1=test Book2.xlsx A1=Book1 A2=["&(A1)&".xlsx]Sheet1'!A1 何か良い解決策をご存知の方、ご教授願います。

  • 他ブックのセル参照するのに名前をセルで指定して参照させたい。

    他ブックのセル参照するのに名前をセルで指定して参照させたい。 題名が適当でないかもしれませんが、よろしくお願いします。 オフィス2000もしくは2002です。 200604.xls、200605.xlsという日付を基にした名称の規則的なブックがあります。 ファイル自体はネットワークの共通ドライブにあります。 それぞれsheet1に同様の形式で値のデータ(文字)が入っています。 その中のA1、B1、C1~・・・の値を 別ブック(仮にtest.xls)のA1に2006、A2に5と入力させることによって test.xlsの3行目に200605.xlsのA1、B1、C1~・・・の値を表示させたいです。 ブック名 test.xls    A列  B列  C列 ・・・・・・ 1行 2006 2行  5 3行 200605.xlsのA1、B1、C1~の値を表示させたいです。 4行 フォルダー名\[200605.xls]sheet1'!A1、次B1、次C1、と都度埋め込んでいけば値自体は出るのですが、 ブック名が手軽に変えられなくて困っています。 test.xlsのセルに埋め込んだ ='フォルダー名\[200605.xls]sheet1'!A1の [カッコ内]の文字をA1,A2セルに入れた値で参照させたいのですが、、、。 (A2は5ですが、参照したいのは2006の05というのも少々ミソです) 結果が同じなら手段はそんなには問いません。 よろしくお願いします。

  • エクセル関数について

    質問です。下記のようなデータ管理をしているものがあり 集計を出したいのですが、うまくいきません。 1行目 A列   B列  C列 2行目 商品ID  商品名 商品名2 3行目 111   りんご   4行目 222   みかん  愛媛 5行目      すいか   6行目 222   みかん 7行目 444   いちご  熊本 8行目 空白予備列 9行目 空白予備列 10行目 空白予備列 条件:C列商品名2が入っていないもので A列商品IDが入っているものだけの数もしくはA列商品IDが入っていないものの数をカウントしたいのですが全セルを指定すると、空白予備列の空白までカウントされてしまいます。なので、条件としてはB列商品名が入っていてA列商品IDが入っているものだけの数もしくはA列商品IDが入っていないものの数をカウントしたいのですが、 何か良い方法はありますか? 色々やってみたんですがなかなかうまくいきません。 空白予備列を作っているのは今後どんどん増えていくので その為にいちいち範囲指定を行うのは面倒なので、 上記で出来る方法があればその方法でやりたいです。 どうか御願いします。

  • エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位

    エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位置に値を表示させたい シート2の A列に番号(連番) B列に商品名(数字とアルファベットの組み合わせ) C列に仕入先(数字4桁) D列にメーカー(数字4桁) E列に区分(数字とアルファベットの組み合わせで3ケタ) が入っていて約5,000行のデータが有ります。 シート1にレイアウトした表があって シート1のB4にシート2のA2の値(番号連番) シート1のB5にシート2のB2の値(商品名) シート1のB6にシート2のC2の値(仕入先) シート1のB7にシート2のD2の値(メーカー) シート1のB8にシート2のE2の値(区分) が表示されるようにしてあります。 マクロを利用して、作成したシート1のボタンを押すと シート1のセルB4の番号欄が1から2(シート2のA3の値)に繰り上がり、 シート1の表のA列の番号と同じ行のそれぞれの値を 上記の規則で表示させるようにできますか? シート1のB4が2になるとシート1の3行目をさしますので シート1の表には、 シート1のB4にシート2のA3の値(連番) シート1のB5にシート2のB3の値(商品名) シート1のB6にシート2のC3の値(仕入先) シート1のB7にシート2のD3の値(メーカー) シート1のB8にシート2のE3の値(区分) が表示されます。 シート1のボタンをクリックするごとにB4のセルは3,4,5,6と繰り上がり シート2のA列の番号と一致した行のそれぞれの値を表示させていく。

  • エクセルでセルの位置を求める

    エクセルの表から複数の条件に合ったセルの位置を求めたいのですが・・・ たとえば ・|A|B| 1|3|1| 2|3|2| 3|5|1| 4|5|2|<--この行(4)を求める 5|6|1|・・・・ ・・・・・ の様な表の場合A列が5でB列が2の行(この場合4)を求めたいのですが よろしくお願いいたします。

  • エクセル 関数について

    ▼質問内容 【図1】 コード  商品番号  業者名    商品名   上代   下代 11111    a      ※1     えええ     2,000   ※2 ※1、【図2】の一覧から、えええが最安値の業者名を抽出したい。 ※2、【図2】にある最安値店舗の下代を抽出したい。 【図2】 コード  商品番号  業者名    商品名    上代   下代 11111    a      テスト      えええ     2,000    1,000 11111    a     あああ     えええ     2,000    1,300 11111    a     いいい     えええ     2,000   1,250 11111    a     ううう      えええ    2,000    800 ▼解説として、 図2の表がシート2のA1セルからF1セルには項目名が2行目から下方に各データが入力されているとします。 シート1では図1がA列からF列の1行目に項目名があるとして、C2セルには次の式を入力して、式を確定する段階でCtrlキーとShiftキーを押しながらEnterキーを押します。その後にその式をF2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 こちらの設定をすれば、解決するとご教示頂いたのですが・・・ =IFERROR(INDEX(Sheet2!$C:$F,MATCH(MIN((IF((Sheet2!$A$2:$A$1000=$A2)*(Sheet2!$B$2:$B$1000=$B2),Sheet2!$F$2:$F$1000))),Sheet2!$F:$F,0),COLUMN(A1)),"") 行数が増えてきたのと、【図1】のデータ配列を変えなくてはいけなくなってしまい、 結果として最安値ではない業者名が抽出されてしまうといった事態になってしまいました。 【図1】 コード  商品番号  業者名  ブランド名  商品名  上代   下代 11111    a      ※1     いいい   えええ   2,000   ※2 解決策が見当たらず、非常に困ってしまいました。 どなたか、解決方法をご教示頂けませんでしょうか? 宜しくお願い致します。

専門家に質問してみよう