• ベストアンサー

EXCEL関数でシート名を変数にする。

EXCEL関数で以下の事をしたく色々ためしたり過去の質問も 見たのですが分かりませんので教えてください。 一つのファイル内にシート1、シート2、シート3・・・のシートがあります。 シート3のA1のセルに =変数A1の式を入れたい。 変数A1の意味は、他のファイルのあるセルにシート1かシート2…を 入れておきその値でシート1のA1から値を読むかシート2…のA1から 値を読み込みかという事をしたのですがどのようにすればよいですか? 二つくらいだとif文でも出来るのですが、多数のシートを対象としているので変数で処理をしたいのですがどのようにすればよろしいでしょうか? =[別ファイル]シート4!A4!A1 のような式で、[別ファイル]シート4!A4のセルに入っているシート名で 読み込むセルのシートを変えたいと言うことです。 分かり辛い説明で申し訳ありません。

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

これでどうですか? =INDIRECT("[ブック1.xls]" &[別ファイル]Sheet4!$A$4&"!A"&ROW()) ROW()は数式が入力されている行の行番号を調べる関数です。 1行目でこの数式を使うと1が戻ってきます。 2行目でこの数式を使うと2が戻ってきます。

take1966
質問者

お礼

ありがとうございます。 上記例で、上手くいきました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

昨日も同じ類の質問がありました。同類の質問はFAQです。答えは#1のご回答に出ています。ポイントは 固定の1つの指定ブック、指定シート、指定セルの値をとるときは セルに=をまずいれ、文字列 =[ブック1.xls]シート1!A1 のように入れますが (1)まず(ブック名かシート名か、セル番地かのデータの入っているセルをそのセル番地で置き換えて &で結合して、固定文字列は””で囲んで、正しい文字列を作る。 先頭=をつけて、正しい文字列になるかどうかテストすることができる。それができると (2)(1)でできた文字列をそのまま=をつけて入れるのでなく =INDIRECT( ) の括弧内に(=を省き)入れれた式をいれる。 これは()内を番地として扱うようエクセルに指示するわけです。 >、[別ファイル]シート4!A4のセルに入っているシート名で 読み込むセルのシートを変えたいと言うことです。 持ってくるセルは,[別ファイル]シート4!A4 にシート名だけが入っているケースとして、 =INDIRECT("[ブック1.xls]" & [別ファイル]シート4!A4 & "!A1") (A1は固定である例) となると思います。 原理は上記の通りだと思うが、本件少し複雑な例でテストしにくいので、うまくいくかやってみてください。

take1966
質問者

お礼

返答ありがとうございます。 上記例で、上手くいきました。 但し、この式を列に対してコピーして "[ブック1.xls]" & [別ファイル]シート4!A4 &"!A1" A1の部分をA2,A3,A4・・・としたかったのですが 文字列の為、上手くいきませんでした。 解決策として、"[ブック1.xls]" & [別ファイル]シート4!A4 &Z1の式とし、この式をコピーするとZ1の部分が、Z2,Z3・・・となりました。 Z1に1,Z2に2を入れることで解決しました。 この方法しかないでしょうか? 重ねての質問で申し訳ございません。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

応用として、 シート名に括弧()やスペースが入っている場合の方法を 追加で紹介しておきます。 =INDIRECT("'"&[別ファイル.xls]Sheet4!A4&"'!A1")

take1966
質問者

お礼

御丁寧な返答ありがとうございます。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

これでどうですか? =INDIRECT([別ファイル.xls]Sheet4!A4&"!A1") 別ファイルのSheet4のA4セルに 参照したいシート名が入力してあるという条件です。 <余談> シート名に()が使われていると正しく動作しません。 回避する方法はあります。

take1966
質問者

お礼

一番の返答ありがとうございます。 回答3のお礼に書かせていただいたのですが、別の問題が出てきました。 関数は、難しいです。

関連するQ&A

  • VBA,シート名を変数で変更

    win98、excel2000使用です。 マクロで各シートの「A1」のセルにある「値」をシート名として変更する方法を教えてください。 単に変更するだけならどうにかできるのですが、力不足で 変数で上記のようにする方法がなかなか思うようにできません。 よろしくお願い致します。

  • EXCEL関数について

    EXCEL関数について B1~E1セルが1箇所でも空白でない場合、A1セルに「1」を返す式を 「COUNTBLANK」関数と「IF」関数を使って試みたのですがうまく行きません。 B1~E1セルがすべて空白の場合はA1セルも空白になります。 ご教示頂きたくお願いいたします。

  • エクセルのシート名を、変数として関数の中で使いたい。

    エクセルのシート名を、関数の中で変数として使うにはどうしたらいいですか? 具体的には、A1にシート名を入れて、A2に = sheet1!A3 という式のなかのsheet1を変更したいのです。つまり、A1にsheet2という文字を入れると、A2の式が =sheet2!A3 になるようにしたいのですが。

  • Excel関数について

    Excelの関数についてご教授ください。 IF関数の使い方です。IF関数は、=IF(条件式,値1,値2)のように表示し、条件式が満たされている場合は値1を表示し、満たされていない場合は値2を表示することとなっています。 私がやりたいのは、少し複雑で次のような関数を作りたいです。 (1)A未満の値の場合、Xを表示する (2)A以上B未満の場合、Yを表示する (3)B以上場合、Zを表示する。 と条件を細かくし、表示する値も複数としたいです。 このような関数は、Excel関数機能を用いて出来ますでしょうか? ご教授いただければ幸いです。

  • EXCEL関数について

    EXCEL関数について Sheet1、A1~A1000セルに「1~10」までの値がランダムに入力されております。 数字は「グループ1」、「グループ2」・・・という意味です。 B列、B1~B1000セルには「1~4」までの値がランダム入力されております。 B列については、空白のセルもあります。 Sheet2、A1~A10セルに、「1~10」までの値、「グループ1」~「グループ10」までが順に入力されております。 ここで、Sheet2、B列~E列、それぞれの1~10セルを使用し、、 それぞれの「グループ」がSheet1にて「1~4」の値をいくつずつ選んでいるか算出したいのです。 「グループ1」について、「1」のカウントはB1セル、「2」のカウントはC1のセルに返します。 同じように「グループ2」はB2~E2のセルに、「グループ3」はB3~E3のセルに値を返したいのです。 「COUNTIF」等の関数でいろいろと試してみたのですがうまく反映されません。 拙文乱文、大変恐縮ですが、ご教示頂きたく何卒宜しくお願い致します。

  • Excel関数について

    Excel関数について質問です。 以下の二つ (1) 下のように、セルA1から入力されてるものを、1、2、3・・と数字順に並び替える良い方法はありますでしょうか。 A-1 A-10 A-10A A-100 A-2 A-20 A-22.5 ・ ・ A-555 ・ ・ (2) 一行目と二行目に値の入ったセルと空白セルが混在しています。どちらも同じものに対する値の為、一行目にまとめようと、一行目の空白セルに二行目のセル(下)に値がある場合はその値を返し、空白の場合は空白のままにするというIF関数を使いましたがうまくいきませんでした。三行目と四行目、五行目と六行目・・とかなりあります。良い方法を教えていただけますでしょうか。 よろしくお願いいたします。

  • エクセルでのシート間の検索(関数)について

    関数についての質問です エクセルでSheet1にコマンドボタンを設定。 このコマンドボタンを押した時、例えば、同じファイル内にある「Sheet2のセルA1」にある値を「Sheet1のセルA1」に貼り付ける関数はありますか? また、エクセルファイルを2つ活用して、「ディスクトップにあるBファイル、Sheet2のセルA1にある値」を「○○フォルダ内にあるAファイル、Sheet1のセルA1に貼り付ける」などの関数もありますか? 申し訳ありませんが、お教え願います。

  • EXCEL2002で,IF thenの関数式を使い、値が「空白」なら、もう一方の関数式を代わりに代入する方法

     EXCEL2002で,IF thenの関数式を使い、値が「空白」なら、もう一方の関数式を代わりに代入する方法を教えて下さい! (1) 通常なら、AA5というセルに、 =RSS|'1332.T'!現在値  という関数式が入っているとします。 (2) ここで、元々上記式が入るAA5セルの値が「空白」(⇒決して「0」ではない。ことに留意して下さい。)であるなら、もうひとつ用意した  =RSS|'1332.T'!○○○ を文字通り、選択的に用い、IF thenの関数式を使って、その値を表示させる。  どちらの式も命令文の一文として、勿論、AA5に入っています。  即ち、間違っていると思うのですが、数式のイメージとしては、  IF =RSS|'1332.T'!現在値=「 」 then =RSS|'1332.T'!○○○ (3)こうしたIF thenの関数式の”正しい式”を教えて頂けないでしょうか?   何卒、宜しく御願いします。

  • エクセルのINDIRECT関数内で変数を使う方法は?

    エクセルのINDIRECT関数内で変数を使う方法は? エクセルのINDIRECT関数内で変数を使う方法がわかりません。 INDIRECT("'"&AA7&"'!A1:A100")の「A100」の「100」を、 別のセルの値(例えばB1のセルの数値)で可変にしたいんですが、「&」や「INDIRECTの入れ子」を使ってもうまくいきません。 どなたかINDIRECT関数でセルの数値を可変にする方法をご存知ですか?

  • 変数名

    変数名を $abc1 $abc2・・・・ 繰り返し文などで生成することは可能でしょうか? そして、変数に値を代入したいのですが・・・。 if(a==true){$abc1 = "OK"} if(a==true){$abc2 = "OK"} if(a==true){$abc3 = "OK"}      ・      ・      ・      ・      ・      ・ このような文は繰り返し文では無理ですか??

    • 締切済み
    • PHP

専門家に質問してみよう