• ベストアンサー

INDIRECT関数 エラーになる

Sheet1とSheet2があり、 Sheet1のA1には「tset」という値が入っています。 そこで、Sheet2の任意のセルに Sheet1のA1の値を入れたいのですが 「=Sheet1!A1」なら可能なのに Sheet2のA1に「Sheet1」と入力し Sheet2のA2に「=INDIRECT(A1)!A1」とするとエラーになります。 このような場合は、INDIRECT関数を使えばいいと知ったのですが 何が間違っていますか?

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

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

INDIRECT 関数の仕様では、参考 URL にあるとおり、文字列を引数とします。「セル参照」あるいは「セル範囲に付けられている名前」を表す文字列(参照文字列)を引数として指定しますが、代わりにセル参照を指定した場合は、参照元の文字列を関数が受け取ってきます。シート名のみを引数とする方法は、ありません。 ○ =a1 ○ =sheet1!a1 ○ =indirect(a1)       …… A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ ○ =indirect("a1")      ……「=a1」と同じ意味 × =indirect(sheet1)     ……エラー「#NAME?」 × =indirect("sheet1")    ……シート名を含む参照文字列が未完成のため、エラー「#REF!」 ○ =indirect("sheet1!"&a1)  …… Sheet2 の A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ ○ =indirect("sheet1!"&"a1") ……「=sheet1!a1」と同じ意味 ○ =indirect("sheet1!a1")   ……「=sheet1!a1」と同じ意味 ○ =a1!a1           …… Excel のサービス機能により「a1」が「'a1'」に自動変換されるため、「a1」という名前のシートが存在する場合のみオッケー △ =a1&"!"&a1         ……一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す △ =INDIRECT(A1)&"!"&A1    …… A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す △ =INDIRECT("A1")&"!"&A1   ……一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す × =INDIRECT("A1!")&A1    ……シート名を含む参照文字列が未完成のため、エラー「#REF!」 × =INDIRECT(A1)!A1      ……「&」と「"」がないため、数式の入力がそもそも受け付けられない × =sheet1!indirect("a1")   ……数式の入力がそもそも受け付けられない ○ =indirect(a1&"!"&a1)    …… A1 セルに「a2」などの有効な参照文字列が記入されており、かつ、「a2」などの名前のシートが存在する場合のみ ○ =indirect(b1&"!"&a1)    …… B1 セルに「sheet1」など、A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ ○ =indirect(a1&"!a1")    …… A1 セルに「sheet1」などの有効な参照文字列が記入されている場合のみ × =indirect(合計)     ……エラー「#NAME?」または「#REF!」 ○ =indirect("合計")     ……「合計」という名前が付けられたセルが存在する場合のみ INDIRECT では、正しいセル参照になる文字列でありさえすれば、自由に文字列をつなげて作ることができます。 ●=indirect(c1&d1) ●=indirect("sheet1!"&c1&d1) ●=indirect(a1&b1&"!e1") ●=indirect(a1&"!"&c1) ●=indirect("合計")

参考URL:
http://office.microsoft.com/ja-jp/excel-help/HP005209139.aspx
tzennlfagx
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>何が間違っていますか? INDIRECT関数の引数の記述に誤りがあります。 =INDIRECT("Sheet1!A1") で試してください。 =INDIRECT(A1&"!A1") とすればエラーにならないはずです。

tzennlfagx
質問者

お礼

ありがとうございました。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

「=INDIRECT(A1)!A1」  =INDIRECT(Sheet1)!Sheet1 これじゃエラーになるでしょ。  INDIRECT(A1&"!A1") これで解決します。

tzennlfagx
質問者

お礼

ありがとうございました。

関連するQ&A

  • Excel2003 IF関数

    シート1のA列に値を入力して行き、終了したら同じようにシート2のA列に値を入力して行きます。 この時、シート1に入力した値とシート2に入力した値は同じでなければなりません。 シート2は再チェック用なので、シート1と値が異なる入力をした場合、 値を入力するセル(A列)の隣のセル(B列)に、 IF関数、真の場合『OK』・偽の場合『入力エラー』と反映されるようにしております。 =IF(B1=seat!B1,"OK","入力エラー") 『OK』の場合は表示させる必要は無いので、条件書式を使用し、 フォント色を白くして、表示させないようにしております。 ただ、シート1を入力してからシート2に入力を始めるため、 シート2のB列には既にに『入力エラー』の表示がでてしまっています。 ※値を入力しないセルもあるのでその場合は『OK』が表示されますが、 条件書式によりフォント色を白くしておりますので、表示されません。 シート2には何も入力をしていないので、『入力エラー』と表示されるのは当然なのですが、 シート2に値を入力してから、シート1,2で異なる値の場合だけ『入力エラー』と表示されるのが理想です。 IF関数はこのような場合適していないのでしょうか? 何か良い方法がございましたらご教示頂けますと幸いです。 宜しくお願い致します。

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

    if関数について質問です。指定したセルに、任意のセルの値が他の任意のセルと同じなら「1」、その他の場合なら「0」となる関数を教えてください。例えば、A1の値が「100」でA2が「100」なら、A3に「1」。A2が「100」以外なら、A3に「0」と入力されるようにしたいです。よろしくお願いします。

  • エクセル関数について

    エクセルの関数についてなのですが、例えば「セルA3」に「セルB2」の値を表示させるには「=(B2)」と「セルA3」に表示させてます。別のSheetの値も表示できるのでしょうか?例えば「Sheet1.Range("A3")」の値をSheet2のA1に表示させたい場合Sheet2のA1にはどのような関数を入力していけばよいのでしょうか?VBAは使わずに表示したいのですが。関数はまだほとんど使ったことがないので分かる人いたら教えてください。よろしくお願いします。

  • 自作関数からのセル操作

    お世話になります。 ExcelVBAで以下のような自作の関数を作成し、実行するとA1に”hoge”が入力されます。 <自作関数> function hoge() thisworkbook.worksheets("sheet1").range("A1").value = "hoge" end function しかし、ワークシート上のセル”A2”に「=hoge()」と入力してEnterとするとエラーになってA1には何も入力されません。 VBAで作った関数をワークシート上で関数として使う場合、任意のセルのプロパティを変更することはできないのでしょうか? よろしくお願いします。

  • こんな関数つくれますか?

    EXCELはやっと初心者を脱したかな、という感じです。 EXCELで出来た表に手を加えたいのですが、こんな関数作れるのでしょうか? シート1と2があります。2の中のあるセルに、シート1のA1~G1に入力された文字の略称を表示させたいのです。ただしA1~A10には、赤・青・黄・緑・茶といったように5つくらいの値が入力され、その中の一つを選んで表示させたいです。当然あまりの5つくらいのセルは空欄のままです。実際にはA1~N1くらいの範囲で、入力される色の種類も10以上、そのなかで6つくらいが入力される中で条件にあった一つを選び出させたいです。該当する値がないときはシート2のセルは空欄にしたいですし、できれば該当データが複数ある時はエラーを出させたいのです。 「VLOOKUP」なる関数も発見したのですが、難しくてよくわかりません。どうかお知恵を。

  • Excel INDIRECT関数の使い方が分からない

    表という名前のSheetがあります。  A 4 1 5 2  : のように、表SheetのA4から下に連番で、    1~400まで数字がふってあります。 式という名前のSheetが式~式(399)まで、400Sheetあります。 400Sheetある式というSheetには表があり、入力されて文字は違いますが、表の配置は全く同じです。 式  のD6セルには 1。Q9セルには「あいうえお」と入力、 式(1)のD6セルには 2 Q9セルには「かきくけこ」と入力されています。 式Sheetが400枚あるので、D6セルには、400まで数字が連番で入力されています。 表SheetのA4セルが、もし空という前提で、1と入力した場合、式~式(399)までのSheetの中から一致した数字が合った場合、そのSheetのQ9のセルの値を返しなさい‥と関数を入れたいと思い、 「INDIRECT」関数を使用しました。 =INDIRECT("式(" & A4 & ")'!D6"  しかし、何度入力しても、REFと出てしまいます。 この関数を使用するのは初めてで、戸惑っています。 どうかご教授ください。

  • Excelの関数を教えてください。

    Excelの関数で例えば シートAのB行の中の値とシートBのセルA1の値、シートAのC行の中の値とシートBのセルB1の値が一致した行のF列の値を返す関数を考えているのですが、いろいろ試してもエラーになってしまいます。(B列とC列の一致する行は1つしかありません) これができないと家に帰れません;; どなたか、教えてください! よろしくお願いします。

  • 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」等の関数でいろいろと試してみたのですがうまく反映されません。 拙文乱文、大変恐縮ですが、ご教示頂きたく何卒宜しくお願い致します。

  • エクセル関数 複数条件検索について

    エクセル関数について質問です。 検索値を増やす場合の関数について教えてください。 セルA6に、セルA3とA4に入力した値と合致する値をSheet2から抽出し、抽出した値とA5の値を掛けるという以下の数式が入っています。 =IF(2-COUNTA(A3,A4),"",VLOOKUP(A3,Sheet2!A:AH,MATCH(A4,Sheet2!A$1:AH$1,1),0)*A5) Sheet2のリストに項目が増えた為、この数式をセルA2(新しく増えた検索値)とA3とA4に入力した値と合致する値をSheet2から抽出し、抽出した値とA5の値を掛けるという数式をA6入れたいのですが、この場合、どのように数式を直せばいいのでしょうか。 エクセルのバージョンは2007です。 ご教示下さい。よろしくお願いします。

  • エクセル関数について

    エクセル関数について質問です。 セルA1、セルA3、セルA5のいずれかに入力された値をセルB1に返すことは関数で可能でしょうか? 可能であれば、IFERROR関数と組み合わせ、エラー値が返らないようしたいです。 エクセルバージョンは2007です。 ご教示ください。よろしくお願いします。

専門家に質問してみよう