• ベストアンサー

ROW関数について

先日質問をしたのですが、理解が足りないようなので質問させて頂きます。 ROW関数はセルを入力したそのセルの行番号を返すものだと思うのですが、例えば =INDEX(シート1!C2:シート1!HR2,(ROW()-3)*3+1,) このような数式をワークシート2のD3のセルに入れると、ROW()は3と解釈されるので、 ・範囲はData!のワークシートのC2からHR2まで、 ・(3-3)*1+1となるので、その範囲内の1番であるData!D2セルを参照するのだと思うのですが、何か間違っているでしょうか? この際に、ROW()に参照されるセルは、もしかしてシート1のものなのでしょうか? 宜しくお願いしますm(_ _)m

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

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

=ROW() なら、ROW関数が入ったセルの行番号です。 =ROW(A4) なら、A4セルの行番号です。 >ROW()に参照されるセルは、もしかしてシート1のものなのでしょうか? 提示された式が記入されたセルの行番号になります。

noname#24160
質問者

お礼

なるほど。 シートが違っていても、INDEXで引いてきたシートの方ではなく、 実際に式が入れられているセルの行番号になるのですね。

その他の回答 (3)

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

>ROW関数はセルを入力したそのセルの行番号を返すものだと 「セルを入力したその」がおかしいです。row()を含む関数式!を入れた(式を複写して、その行にセットされたものも含む)行番号です。 ですからシート1に式を入れていて、Sheet2!row()は普通意味がない。 Sheet2!row(a3)も3と言うだけ。 ーーー この点とINDEX関数の理解が完全でなく、混乱している。 ーー >数式をワークシート2のD3のセルに入れると、ROW()は3と解釈されるので これは正しい。row(A3)なら3と書くのに等しいです、。しかし特殊な 使い方では、row(A3)としたいときが起こってきますので、全く同じとはいえないケースがあります。1方は固定、他は縦方向複写でA3の3の値が変化してくれる点です(詳細は略)。 ーーー INDEX関数は 第1引数は考えているセル範囲のアドレスを、第2引数はその何行目 、第3引数は何列目の数を指定し、結果的に指定の1セルの値を取り出すものです。 第1引数は領域で シート1!C2:シート1!HR2 第2引数は範囲左上端セルから何行目かで ,(ROW()-3)*3+1 第3引数は 範囲左上端セルから何列目かを指定し、省略したら1 。 行は,(ROW()-3)*3+1 でROW()が1つ筒増えるにつれ3列づつ増えるから、3つ目ごと(2つとび)に指定することになります。 ROW()-3のー3は初期値を4行でシート1の1行を取るよう、修正するためのテクニックです。

noname#24160
質問者

お礼

第三引数については知りませんでした。 勉強不足で申し訳ないです・・・ 自分はずっと省略していたので、1だったようですね。 スマートな式ではないと思いますが、ごちゃごちゃといじっているうちに何とか出来るようになりました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

http://oshiete.coneco.net/kotaeru.php3?q=2593582 でしょうか? >ROW()は3と解釈されるので ROW()だけを書いた場合は、その式を入れたセルの行番号を返します。 従ってD3に入力した場合は3が返ります。その通りです。 なおROW(A5)のようにセルを記述するとどの位置に書いても5が返ります。 >Data!D2セルを参照するのだと思うのですが INDEX(シート1!C2:HR2,1,1)の場合、左上のシート1!C2を意味します INDEX関数は左上が(1,1)、OFFSET関数は左上(正確には基準セル)が(0,0)になりますので、これらの情報を混同されたのでしょうか?

noname#24160
質問者

お礼

質問文の間違い、申し訳ありません。 実は、確かに合っていると思っていたやり方で何度書き直してもどうしてもうまくいかなかったのですが、 気が付いたらうまく参照されていて、何が悪かったのか分からなくなってしまいました; INDEX関数とOFFSET関数ではそのように違うのですね。 よく分かっていない時に混同していたのかも知れません。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >=INDEX(シート1!C2:シート1!HR2,(ROW()-3)*3+1,) 通常は、(ROW(A1)-1)*3+1 1,4,7,10,13.... というように、今は、ROW()関数に、引数を入れて使うことが多いです。 こういう方法を、インクリメントと呼び、増えていく数を取るために使われ、そうすることによって、シートのアクティブな行や列とは関係がなく使えます。 下にドラッグするなら、ROW() を、右にドラッグするなら、COLUMN() に初期値を、A1などのセル番地を入れます。ただし、1以下は入れられませんので、「0 」やマイナス値の場合は、その出てきた数を、マイナスします。

noname#24160
質問者

お礼

ROW関数には実際に数字を入れることの方が多いとのこと。 確かに自分はそのまま使っていた為、範囲を$で固めていました。 実際に入れてしまったほうがやりやすそうですね。