dポイントプレゼントキャンペーン実施中!

お世話になります。

EXCEL関数の「INDIRECT」は指定される文字列への参照を返す。

「COUNTA」はデータ(文字、数値)の個数を表示する。

といったことを最近しりました。


しかし、下記のように設定すると、C列のセルに並べた

情報の一番最終行に入れた情報が反映されます。


=INDIRECT("$C"&COUNTA($C:$C))


しかし、 それは私が望んでいることなので全然よいのですが

なぜ上記の式で、それが実現出来るようになったのか

まったく理屈がわかりません。

ご存知のかたお教え下さい。

よろしくお願いします。

A 回答 (2件)

COUNTA($C:$C)


C列全体にあるデータの個数を返します。
(仮に「6」とします。)

"$C"&COUNTA($C:$C) (→ "$C"&6 )
先のCOUNTA巻数の結果の前に、"$C"という文字列を加えます。
「$C6」という文字、セル番地になります。

INDIRECT("$C"&COUNTA($C:$C)) (→ INDIRECT($C6) )
INDIRECTでセル番地(C6)の値を返します。

なので、この場合、C列が1行目から6行目まで空白無く入力されていれば、C列の最終行である[C6]の内容が結果となります。
しかし、C列で途中に空白があれば、データの個数が変わりますので、C5やC4の内容が結果となってしまいます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
とてもわかりやすかったです。

今後とも宜しくお願いします。

お礼日時:2009/04/13 09:43

>C列のセルに並べた情報の一番最終行に入れた情報が反映されます。



とありますが、おそらく違うと思います。
C列の途中に空欄があれば違う結果になります。

「=INDIRECT("$C"&COUNTA($C:$C))」の意味
まず、
「COUNTA($C:$C)」は、C列で空欄ではないセルの個数を表しますので、
それを[x](数字)とすれば「indirect」の中身は、C[x]となりますので
セルのC[x]の結果が得られます。

今、C列に上から空欄がなくずっと入力すれば、結果は最後に
いれたものが出ます。
(例:C列の1行目から10行目まで全部いれればCOUNTA($C:$C)は
10になるので、セルC10の中身が答えになります。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます!

C[x]を、文字列と見なす
という考え方なんでしょうか。

ありがとうございます。
今後とも宜しくお願いします。

お礼日時:2009/04/13 09:41

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