• ベストアンサー

EXCEL関数、「INDIRECT」 「COUNTA」の使い方

お世話になります。 EXCEL関数の「INDIRECT」は指定される文字列への参照を返す。 「COUNTA」はデータ(文字、数値)の個数を表示する。 といったことを最近しりました。 しかし、下記のように設定すると、C列のセルに並べた 情報の一番最終行に入れた情報が反映されます。 =INDIRECT("$C"&COUNTA($C:$C)) しかし、 それは私が望んでいることなので全然よいのですが なぜ上記の式で、それが実現出来るようになったのか まったく理屈がわかりません。 ご存知のかたお教え下さい。 よろしくお願いします。

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

  • ベストアンサー
  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.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の内容が結果となってしまいます。

gyaran51
質問者

お礼

ありがとうございます。 とてもわかりやすかったです。 今後とも宜しくお願いします。

その他の回答 (1)

  • shiritai
  • ベストアンサー率43% (10/23)
回答No.1

>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の中身が答えになります。

gyaran51
質問者

お礼

早々のご回答ありがとうございます! C[x]を、文字列と見なす という考え方なんでしょうか。 ありがとうございます。 今後とも宜しくお願いします。

関連するQ&A