• ベストアンサー

エクセル =INDIRECT("Sheet"&ROW(A2)&"A1")

たびたび恐縮です。 別に質問したINDIRECT("Sheet"&ROW(A2)&"A1")について、概要は理解できました。(この式の場合、Sheet2のA1の値を表示させるものだと思います。) よく理解していない点 *””位置、なぜ? *&は文字列をつなぐという意味でよいのか? *&の位置、なぜ? 多分、最初の”と最後の"が1組で中間の2つが別の1組と思います。とすると、なぜ中間部が"&---&"と表現しなければいけないのかがよく解りません。せめて、"&---"&なら理解できるような気がします。 お願いいたします。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>*&は文字列をつなぐという意味でよいのか? そうです。 文字の連結を行います。 >なぜ中間部が"&---&"と表現しなければいけないのかが (! が抜けていますが・・・) "Sheet" と "!A1" は、文字として記入されているので、""で括る必要があります。 ROW(A2) は、関数なので、"ROW(A2)" としてしまったら、ROW(A2) と言う関数は機能しません。 そうなると、INDIRECT("SheetROW(A2)!A1")という形になり、希望の動作になりません。 "Sheet"(文字)& ROW(A2)(関数)& "!A1"(文字) "Sheet"(文字)& 2(関数の戻り値) & "!A1"(文字) 最終的に "Sheet2!A1" という文字が INDIRECT で処理されます。

anhiroyuki
質問者

お礼

ありがとうございます。 大変参考になりました。

その他の回答 (2)

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

INDIRECTのカッコ内の式を、空きの別セルに、=をつけて設定してみてどうなるか見れば、意味がよくわかる。 ””で囲んであるA1(実は!A1だが)は変化させないでよいから定数的に””で囲んであるのです。””で囲んである文字列は、関数でも 表示形式でも、プログラムでも、そのとおりの値で変化しません。 >&は文字列をつなぐという意味でよいのか &は前後の文字列を連結する文字列接合(連結)演算子といいます。 演算子+-などと同列のところで、解説書では説明がなされる基礎的な事項です。 INDIRECTのカッコ内は、人間が手業でセルに打ち込む式と全く同じになっている必要があるのです。 普通は()内の式の一部が、式の複写をしたときにおいて、行などに伴って関数で変更されるから、使い道があるのです。 この場合はROW()が式を入れるセルの行で変化します。 ーー 全般にこの程度の質問を回答後にやっているようでは、関数を使う課題の質問をしても、理解できないことになります。回答するほうもやり切れません。 改めてエクセルを(浅くても)「全般的に」勉強し、その後に質問する必要があります。

  • NYAx2
  • ベストアンサー率27% (3/11)
回答No.2

質問の中の説明からすると、「INDIRECT("Sheet"&ROW(A2)&"A1")」は違うと思います。多分、「INDIRECT("Sheet"&ROW(A2)&"!A1")」でしょう? 「!」(俗称、ビックリマーク)が抜けてます。 すると、これは、「INDIRECT("Sheet2!A1",True)」と同じです。(Trueは指定省略可ですね。) ですから、質問に対する回答は、 (1)「Sheet」という文字列を囲むための""と、「!A2」という文字列を囲む””の2組です。一番左端の「"」と一番右端の「"」が組ではありませんよ。 (2)おっしゃるとおり。  「Sheet」と「ROW(A2)」(つまり、「2」)と「!A1」をつないで →Sheet2!A1 (3)「&」は上記(2)で説明した文の中の「と」と同じ意味を持つもので、複数の文字列群をつなぐもの。 文字列「abc」と文字列「123」を1つの文字列としてつなぎたい場合、 "abc"&"123" とします。結果、「abc123」となります。 ちなみに、上記までの説明文で、「」は文字列の表記を強調するためです。

anhiroyuki
質問者

お礼

ありがとうございます。 参考になります。

関連するQ&A

専門家に質問してみよう