昨日のコミュニティ立ち上げ後、ありがたいことに熱い想いを添えた参加申請をいただきました。
それで申請をチェックして招待を送ったかどうかを管理しないといけないと思い、フォームの結果シートをいじっていたのですが、疑問が一つ。
importrangeって同じシート内でもっとうまいこと使えないのかな?
なにがやりたいかというとフォームに記入いただいた名前とメールアドレスの部分だけを別シートに展開したい。なぜならフォームの結果部分はあまりいじりたくないので。
そういった際、恥ずかしながらいままで以下のようにやっていました。
=importrange("同じファイルのURL","'フォームの回答 1'!A:C")
しかしよく考えたら絶対におかしい。同じファイル内でうまくやる、つまりわざわざファイルのURLを記述しなくていい方法絶対にあるでしょ。そう思って、一度何も調べずに勝手な期待で以下のように入力してみた。
='フォームの回答 1'!A:C
なんと!エラーで展開されない!そりゃそうですよね・・・。
「importrange 同じシート内」等で検索してもなかなか引っかからないので関数リストを眺める。
Google スプレッドシートの関数リスト - ドキュメント エディタ ヘルプ
複数セルに結果を展開できるのはGoogle関数だけだと思うのでそのあたりを見ると、つかえそうなのがあった。
ARRAYFORMULA - Docs Editors Help
=arrayformula('フォームの回答 1'!A:C)
サンプルをみるとカラム同士を演算した結果を出力するもので、これはこれで使ったことなくてまじかー。関数で演算する列の行数が動的に変わる場合に使えるやつで、いままでこういったケースは元データ列が増えたらGASで関数を書き足すようにしていたけど、絶対こっちのほうが楽だ・・・。
ARRAYFORMULA(SUM(IF(A1:A10>5, A1:A10, 0))) ARRAYFORMULA(A1:C1+A2:C2)
それはそれとして、arrayformula、importrangeの同シート内利用としても素朴に使えるのでした。