仕事柄、成績付けや採点をやることがありますが、他のシートを動的に参照したいケースがあります。
特にプログラム書くわけではないけどGAS使わなくてもINDIRECT関数を使って出来たのでメモです。
こんな感じで使えます。
=INDIRECT(A1&B1&"!H3")
INDIRECT関数の恩恵を受けた
— 菅原のびすけ (@n0bisuke) October 4, 2022
/ Googleスプレッドシートでシートの参照をセルから取得したい、セルに書かれたシート名にアクセスしたい場合 https://t.co/76H1UdelCx
やりたいこと
Googleスプレッドシートに
- 集計用の
採点小計
のシート - 各学生の点数が入ってるシート
の2種類があります。
採点小計
のシートに 宿題ID
と名前
を記載することでシートを読みに行って点数を自動的に入れたい。
といったことをやりたいです。
文字列連結の&
とシート参照の!
だけではうまくいかない問題
基本的な文字列の連結は&
を使うので、=A2&B2
とすると0201菅原になります。
また、別シート参照は"シート名!範囲"
が基本なので、='0201菅原'!I3
などとすることで別シートの範囲を参照できます。
この二つを組み合わせると上手くいきません。
=A2&B2&!I3
など試しましたがエラーが出て参照できないようでした。
INDIRECT関数
ちゃんとドキュメント読んでませんが、どうやらINDIRECT関数を使うことで、
-
&
で範囲連結してシート名の文字列を作る -
!
と範囲を連結し、範囲の文字列を作る - 生成された範囲を読み込みにいく
といった処理を一気にやってくれてそうでした。
=INDIRECT(A2&B2&"!I3")
まとめ
めちゃ便利でした。
GAS使わないといけないものだと思ってたので感動です。