【GAS】多分、恐らく、全く無意味な関数を作ってしまった(INDIRECT関数凄い)

GoogleスプレッドシートにはINDIRECTという関数がある。 これはとても便利な関数と何処かで読んだ事がある。 改めて利用例を色々見ると、関数を書き換えなくても動的に関数の動作を変えることが出来る関数というのが正しい理解であろうか。 この関数は便利そうである。 よく見かける利用例はこんなので、行数が不確定なデータの合計を取る必要がある場合どうするのかというもの。 =SUM(A1:A16) と、このように指定した場合、行数が変わったら関数を書き換えなければならない。 ここで、行数を調べるために=COUNTA(A:A)として行数を調べる。 で、=SUM("A1:A"&COUNTA(A:A))としたいがエラーになる。 これを解決するのがINDIRECT関数という説明で以下のようにする。 =SUM(INDIRECT( "A1:A"&COUNTA(A:A))) COUNTAでの増減対応例 これで行数が増えても減ってもA列をカウントした数までSUMの対象になる。 INDIRECT関数で文字や数値を関数に渡すことで、色々と動的に関数の挙動が変えられるわけだ。 でも、COUNTAだと間に空白行があったら、空白はカウントしないから範囲がずれてしまう。 事例には続きがあり、もっと複雑な関数の組み合わせで空白行があっても最終行を対応する事が出来る事例が掲載されていた。 だが、その事例を見た私は、こんな複雑で見づらい関数の組み合わせを使いたくないと思った。(MAX関数とMATCH関数を用いるものであったがここでは割愛する) であるから、シンプルに最終行を取得するユーザー関数を作ってしまったのである。 「作ってしまった」 だって多分恐らく全く無意味だから・・・。 とりあえず、作ってしまった無意味な関数を使う場合こうなる =TOMM(A:A) これで最終行が数値で取得できる。 空白行があっても問題はない なので、空白行があっても対応できる範囲が可変なSUM関数はこんな感じで使える。 =SUM(INDIRECT( "A1:A"&TOMM(A:A))) シンプル!、MATCH関数を組み合わせるような利用例と比べたらかなりシンプル!...