・Excelで、常に一個右(左)のシートを相対参照する数式が組みたい
・でもVBAのユーザー定義関数は使いたくない
という縛りを数式で実現できるか?という話ですが、
結論、
VBA無しでもできるけど、マクロ関数というものを使う。拡張子はxlsmになる。
という感じのようです。(2020年8月現在)
イメージ
参考にさせていただいたURLはこちら
https://teratail.com/questions/149450
手順
1.特殊な関数を使えるようにするため、「名前の定義」をする
2.数式 → 名前の定義 → 新規 で以下の名前を定義する
名前:book 参照範囲:=get.workbook(1)
こんな感じにできたらOK
3.シートのA1セルに、以下の数式を入れてみる
=INDIRECT("'"&INDEX(book,SHEET()+1)&"'!"&CELL("address",A1))
すると、常に1個右のシートを参照するようになる。
2個右なら
=INDIRECT("'"&INDEX(book,SHEET()+2)&"'!"&CELL("address",A1))
とSHEET()+ の後の数字を増やせばOK。
また左のシートを参照するなら、SHEET() - 数字 とすればOKです。
=INDIRECT("'"&INDEX(book,SHEET()-1)&"'!"&CELL("address",A1))
4.保存する。xlsmで保存してください。
【応用】
これを使って、シートを時間遷移と考えて、VBAを使わずに物理演算してみました。
特に意味はないです。
https://youtu.be/GPBcTKYgcrU