• ベストアンサー

”A"& と Row() をかけ算する意味?

"A"& と Row() をかけ算する意味が理解できないで困っています。ご教示よろしくお願いいたします。 追伸: tsubuyuki様。先ほどはありがとうございました。

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

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

ちょっとだけ、小学生の頃に戻ってみましょう。 例えば「1+2×3」を計算するとき、どんな順番で計算するのでしたでしょう? 基本的には「掛け算(割り算)が先」がルールでしたね。 つまり、上記式は「1+6=7」が算数的には正解です。 CALCでもエクセルでもなんでも、このルールが適用されます。 実際問題、「&」の意味は理解できていますか? これもまた、CALCでもエクセルでもなんでも「文字列を結合する」演算子です。 これは基本的に「全ての計算・演算の最後」と言うのもまた暗黙のルールと覚えましょう。 つまり、「"A"&2*Row()」を計算するときも、掛け算が先。 「2*Row()」が先に計算されますから、該当行が2行目だとしたら 「2*2=4」が返ってきます。 そのあとに文字列結合(&)ですから「“A”&4」が返ります。 なので、上記式「"A"&2*Row()」をC2セルに入れると 「A4(ただし半角)」という文字列が返ってきます。 これをIndirect関数に渡してやるのが、この式の意味です。  ※Indirect関数もエクセルと同じように使えますので、   これも詳細は別途お調べくださいませ。 B列も同様の考え方です。 「"A"&2*ROW()-1」ですから、まずは掛け算をします。 該当セルがB2セルの時は「2*Row()=4」。 次に足し算(引き算)で「4-1=3」。 最後に文字列結合(&)をこなして「“A”&3=A3」と返ってきます。 ※括弧()が付いたら話は別です。  括弧の中から順に計算してやりましょう。  (1+2)×3=9  ですね。  これも「算数」のルールです。 蛇足ではありますが、計算根拠もいたってシンプルです。 今度は中学生に戻ってください。 例えば、「行が1の時は返り値が2に、行が2の時は返り値が4に・・」と対応させたいですね。 コレを解くには、いわゆる「連立方程式」を使うのが一般的です。 と言っても、ひじょーに簡単な部類ですので、ちょっとだけ考えてみましょう。   1×a+b=2   2×a+b=4 の連立方程式ですから、a=2,b=0 なだけです。 B列も同様に   1×a+b=1   2×a+b=3 の連立方程式ですから、a=2,b=-1 ですね。 なので式が「=2*Row()-1」で求められるわけです。 で、これをIndirect関数に渡すことにより、先のご質問が解決する、と言うことですね。 わかってしまえば「意味」なんてシンプルなモノです。

chy_farm
質問者

お礼

お手数おかけいたしました。ありがとうございました。

その他の回答 (1)

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

かけ算をしてるのはそれとそれじゃありませんね。 >意味が理解できない 実際にご自分の手を動かして、まずセルに ="A"&2*ROW() とだけ記入、下向きにコピーして何が出てくるのか実際に目で見て試してみると良いですよ。 更に言えばもう一段噛み砕いて、 =ROW() だけセルに記入、下向けにコピーして何が出てくるか、ここから理解するともっと良いです。 それからようやく、INDIRECT関数に「A2」や「A4」や「A3」を食べさせると該当セルの内容を持ってきてくれる事を理解します。

chy_farm
質問者

お礼

おかげさまでわかってきました。ありがとうございました。

関連するQ&A