LoginSignup
4
3

More than 3 years have passed since last update.

ExcelでVBAは使わずに「常に一個右(左)のシートを相対参照する数式」を作る。(マクロ関数)

Last updated at Posted at 2020-08-04

・Excelで、常に一個右(左)のシートを相対参照する数式が組みたい
・でもVBAのユーザー定義関数は使いたくない
という縛りを数式で実現できるか?という話ですが、
結論、
VBA無しでもできるけど、マクロ関数というものを使う。拡張子はxlsmになる。
という感じのようです。(2020年8月現在)
イメージ
image.png

参考にさせていただいたURLはこちら
https://teratail.com/questions/149450

手順
1.特殊な関数を使えるようにするため、「名前の定義」をする
2.数式 → 名前の定義 → 新規 で以下の名前を定義する
名前:book 参照範囲:=get.workbook(1)
こんな感じにできたらOK
image.png

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))

イメージ
image.png

4.保存する。xlsmで保存してください。

【応用】
これを使って、シートを時間遷移と考えて、VBAを使わずに物理演算してみました。
特に意味はないです。
https://youtu.be/GPBcTKYgcrU

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3