スプレッドシートではCELL関数の検査の種類に filename がないため、シート名を関数で取得することはできません。そこで今回はGAS(Google Apps Script)を使って、シート名を取得する関数やシート名を変更する関数を作成する方法をご紹介します。
シート名を取得する方法
まず[拡張機能]タブから、[Apps Script]を開きます。
スクリプトエディタに入力するコードは、以下の通りです。functoin の後ろの sheetname() 部分が、シート名を取得するときに入力するオリジナルの関数名になります。
function sheetname() { return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName(); }
コードが入力できたら[プロジェクトを保存]から保存し、[実行]を押します。
初めて実行する場合は承認が求められるので、[権限を確認]をクリックしてください。
ログイン画面から自身のアカウントを選択し、左下の[詳細]をクリックします。
次に[無題のプロジェクト(安全ではないページ)に移動]をクリックし、[許可]を押します。
シートに戻って作成した関数名 sheetname() を入力すると、現在のシート名が取得できました。
シート名を変更する方法
ファイルを追加(+)から[スクリプト]を選択し、新しく関数を作成します。
シート名を変更するコードは、以下の通りです。今回は A1 セルの値を取得してシート名に設定するので、getRange(1,1) としています。
function setsheetname(){ let value = SpreadsheetApp.getActiveSheet().getRange(1,1).getValue(); SpreadsheetApp.getActiveSheet().setName(value); }
コードが入力できたら、一旦プロジェクトを保存します。
次にサイドメニューの[トリガー]から、[トリガーを追加]をクリックしてください。実行する関数名を選択し、イベントの種類は[変更時]に設定して保存します。
シートに戻って A1 セルから内容を変更すると setsheetname() が実行され、シート名が自動で更新されました。
実用例を 1 つご紹介します。
まず、[合計]シートにそれぞれのシート名をセル参照で一覧表示させます。
次にINDIRECT関数で、それぞれのシート名を参照させます。
例えば INDIRECT(A2&”!B7″) ならセル参照の文字列は 20234月!B7 になるので、 [2023年4月]シートの B7 セルから値を返します。
INDIRECT関数の構成要素:(参照文字列, [参照形式])
それぞれのシート名を変更すると、該当のシート名と[合計]シートのシート名が更新されます。
このとき一度エラーになりますが、数式を入れなおすと解消されます。