プロが教えるわが家の防犯対策術!

マイクロソフトの説明が理解できません。
https://support.office.com/ja-jp/article/INDEX-% …

冒頭に
>INDEX 関数には、次の 2 つの使い方があります。
>指定したセルまたはセルの配列の値を求める場合は、「配列形式」を参照してください。
>指定したセルの参照を求める場合は、「セル範囲形式」を参照してください。

とありますが、セルの値を求めるというのはわかるのですが、セルの参照を求めるとはどういうことでしょう。「セルの参照」を返してくれるのですからaddress関数のようにセル番地とか範囲が文字列として帰ってくるのを期待するのですが、ここに書かれているどっちの方法でやっても”値”しか返ってきません。どうすれば「セルの参照」としてINDEX関数を利用できるのですか?
「値」でなく「参照」を求めているのですから「配列」は今回関係ありませんよね?
そもそも「セルの参照を返す」とはどう定義されているものなんでしょうか?

また、ここの説明の「セル範囲形式」の書式は
INDEX(参照, 行番号, [列番号], [領域番号])と書いてありますが
引数の説明に、「参照」はなく、代わりに「対応範囲」なるものが突然湧いて出てきました。
何か意味があると思うのですが何でしょうかこれは?

自分一人では解決できないためどうかお知恵を貸してください。

A 回答 (4件)

「セルの参照を返す」とはどう定義されているものなんでしょうか?


たぶん、3行目の4列目のセルを参照するのには、D3とか$D$3のような参照の表記を使用すると思うのですが、INDEX(C2:F6,2,2)でも良いのです。
サイトページの中に、次の説明も書かれています。
=SUM(B2:INDEX(A2:C6, 5, 2))
セル B2 と、セル範囲 A2:C6 の 5 行目と 2 列目の交差するセル B6 の合計を求めます。
この例のように、SUMで合計するセル範囲をINDEX関数で可変的に指定したり、MAXやMIN関数で調べる範囲をINDEX関数でセル参照が戻るようにしておくと、便利に使えることはあります。
    • good
    • 0
この回答へのお礼

やはり値だけではなく参照を返す方法もあるということですよね?

その違いは
①「=INDEX」で直接指定すると値を返し
②計算式の中で参照先として使用すると参照を返す
ということなのか?
これってINDEX関数特有の動きなのか?それともExcel自体の動きなのか?
いろいろ検索してみると、ようやく、知りたかった情報に辿り着きました。
http://www.clayhouse.jp/formula/formula02.htm
「関数のデータ型について >関数の戻り値のデータ型」

この中の記事にも、当初の疑問と同じことが書かれています。
>INDEX関数については、引数・戻り値ともに配列とセル参照のどちらを扱うこともでき、
>引数がセル参照であればセル参照を、配列であれば値(または配列)を返します。

ですが、この記事を読んだ後ならば、やっとその意味が理解できました。
全てまとめると


「セルの参照を返す」の定義
 ・戻り値のデータ型が”セル参照”の関数(INDEX、OFFSET、INDIRECT、CELL)を使って、
  特定のセル番地、または範囲を指定する”セル参照”を返すこと。
 ・データ型が”セル参照”でない関数の戻り値で”$A$1”というセル番地を得ても
  見た目は同じですが単なる文字列と扱われ、”セル参照”にはなりません

INDEX関数の説明
 ・引数がセル参照であれば(戻り値のデータ型としての)セル参照を、
  配列であれば値(または配列)を返します。
 ・=INDEXで直接参照先を指定した場合、単純に参照先の値を表示します。

Excelの動き
 ・計算式の中で、参照先としてセル番地を直接打ち込んだ場合、
  自動的に文字列からデータ型の”セル参照”に変換されます。


ということのようです。
前にも同じような問題で躓いて断片的に分かったつもりでしたが、今回全容を理解できました。
INDEX、OFFSET、INDIRECT、CELL以外にもデータ型が”セル参照”のものが
ありましたら教えてください。
ありがとうございました。

お礼日時:2017/08/23 11:04

>「セルの参照を返す」の定義


> ・戻り値のデータ型が”セル参照”の関数(INDEX、OFFSET、INDIRECT、CELL)を使って、
>  特定のセル番地、または範囲を指定する”セル参照”を返すこと。
CELL関数はセル参照は返さないです。

説明を見ると
CELL 関数は、セルの書式、位置、または内容に関する情報を返します。
となっていますから。

ちなみにセル参照として返す検証として
=CELL("address",INDEX(A:A,2))
とすることもできますね。

OFFSET、INDIRECTは揮発性関数ですので、シート上での多用は禁物。
計算範囲外のセルを編集しても計算が走ります。
名前の定義や入力規則などに使うようにしましょう。
    • good
    • 0
この回答へのお礼

CELL関数に関しては誤解をしておりました
=CELL("address"ではADDRESS関数と同様、文字列で返すのですね。
失礼しました。

あと揮発性関数という言葉は初めて聞いたので、大いに役立ちました。
INDEXが使われる理由の一つなんですね。
INDEXは何かとらえどころがなくて今までVLOOKUPの左参照ぐらいにしか
使ってなかったのですが今回どんな利点があるのかよくわかりました。
ありがとうございました。

お礼日時:2017/08/23 19:50

お礼に対する返答です。



セルの参照…は参照するセルの値を返すという事です。
ですので参照先の場所を得たいのであればADDRESS関数を使うしかありませんよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。
とすると、結局どっちを使っても値しか求めることができないのですね?
>指定したセルまたはセルの配列の値を求める場合は、「配列形式」を参照してください。
>指定したセルの参照を求める場合は、「セル範囲形式」を参照してください。
なんでわざわざこんな書き方をしたのか疑問が残ります。

書くならこうでしょう。
指定したセルまたはセルの配列の値”で”求める場合は、「配列形式」を参照してください。
指定したセルの参照”で”求める場合は、「セル範囲形式」を参照してください。
外資企業に勤める日本語が不自由な方のせいで、いらない回り道をしてしまいそうです。

ところで任意の計算式の中で「参照先」としてINDEX関数を使った場合、
「値」じゃなくて「参照先」として計算されるのではないでしょうか?
もうちょっと違う見解を持った方の意見を待つことにします。

お礼日時:2017/08/22 20:48

参照範囲を返してほしいのであればOFFSET関数のほうが分かりやすいと思う。


ただし文字列ではなく範囲として戻る。
 =SUM(OFFSET(A1,1,2,2,5))
のように「C2:G3」を指定するときに使う。

※OFFSET(A1,1,2,2,5)
 A1セルから下へ1つ右へ2つ目のセル(C2セル)から数えて下へ2つ右へ5つ目のセル(G3セル)を範囲として返す。
 という内容です。

・・・本題・・・

配列を参照するというのは、
 =INDEX({2,3;4,5;6,7;8,9},1,2)
のように「{ }」で囲った値を参照する方法。

セル範囲を参照するのは
 =INDEX(A1:B10,2,1)
のようにセル範囲を指定する方法です。

たしかにちょっと分かりにくい説明ですね。

※INDEX({2,3;4,5;6,7;8,9},〇,〇)
これは、
 2 3
 4 5
 6 7
 8 9
このような範囲を参照しているのと同じです。
    • good
    • 0
この回答へのお礼

違ってたらごめんなさい。
質問の意図は「INDEX関数での書式(参照の仕方)」ではなくて、返される(値)の違いなんです。
上記の配列の場合
=INDEX({2,3;4,5;6,7;8,9},1,2)でも
=INDEX(A1:B10,1,2)でも
返ってくるのはA2の値である”3”じゃないですか。

でもマイクロソフトの説明によると
=INDEX(A1:B10,1,2)のように「セル範囲形式」で指定した場合は
「値」ではなくて「セルの参照」を返してくれるはずなんですよ
つまりA2の値である”3”ではなく
「A2というセルを特定する何か(例えばセル番地”A2”という文字列)」
が得られると思うのですが、実際返ってくるのは値である”3"なんです。
この解釈のどこに間違いがあるのでしょうか?

お礼日時:2017/08/22 20:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!