Excel:スピル機能の使用例
Microsoft 365でExcelに追加された新機能のスピルを使ってみたのでいくつか使用例を紹介したいと思います。
スピルとは
スピルとは数式から返された配列のセルに入りきらないこぼれた値を隣接するセルに返す機能でイメージは以下のような感じです。
- 数式で配列(表)を返すことが出来るようになった
- 数式が入力されているセルから右下に向かって数式で返された配列(表)が表示される
スピル機能の詳細は動的配列数式と、こぼれた配列動作 - Office サポートに記載があります。
スピル機能の使用例
それではスピル機能の使用例をいくつか紹介していきます。
九九の表を作る
以下はスピル機能を利用して九九の表を作成する例です。B2のセルには1~9の9行の配列と1~9の9列の配列を掛け合わせて9行x9列の九九の表の配列を返す数式を入力しています。
={1;2;3;4;5;6;7;8;9}*{1,2,3,4,5,6,7,8,9} | |||||
結果は以下のようになります。B2のセルに入力した数式で返された九九の表の配列がB2:J10の範囲に返されます。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||
2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | ||
3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | ||
4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | ||
5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | ||
6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | ||
7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 | ||
8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | ||
9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | ||
文字列を分割した表をつくる
次にSEQUENCE関数とMID関数を組み合わせて文字列を1文字ずつ分割する使用例を紹介します。
エクセル | ||||
=MID(B2,SEQUENCE(LEN(B2)), 1) | ||||
B3の数式はSEQUENCE関数で1~4の連番の4行×1列の配列を返し、B2に入力されている文字列「エクセル」に対してMID関数を以下のように1~4の数値でそれぞれ適用しています。
MID("エクセル", 1, 1)
MID("エクセル", 2, 1)
MID("エクセル", 3, 1)
MID("エクセル", 4, 1)
このようにしてB3の数式から返された配列がB3:B6の範囲にスピル機能で返された結果は以下です。
エクセル | ||||
エ | ||||
ク | ||||
セ | ||||
ル | ||||
これまでExcelで文字列を分割したい場合はVBAで関数を作成したりしていましたが標準で使える関数とスピル機能を組み合わせることで簡単に実現できます。
フィボナッチ数列を作る
最後にフィボナッチ数列の5行×5列の表をLET関数とSEQUENCE関数を組み合わせた数式とスピルで作る使用例を紹介します。
まずフィボナッチ数の一般項は以下です。
フィボナッチ数の一般項に現れる \(\phi\) は黄金数で以下で求められます。
上記のフィボナッチ数の一般項を用いてフィボナッチ数列を出力するエクセルの数式は以下です。
=LET(
n, SEQUENCE(5,5),
p, (1+SQRT(5))/2,
(POWER(p,n)-POWER(1-p,n))/SQRT(5))
上記の数式の内容は以下です。
n
に1~25の5行x5列の配列を宣言p
に黄金数を宣言- フィボナッチ数の一般項
SEQUENCE関数で作成された連番1~25の各n
の値と黄金数p
が最後の引数に指定しているフィボナッチ数の一般項で計算されn
が1~25のフィボナッチ数列の配列が返されます。この数式をB2に入力した結果は以下です。
1 | 1 | 2 | 3 | 5 | ||
8 | 13 | 21 | 34 | 55 | ||
89 | 144 | 233 | 377 | 610 | ||
987 | 1597 | 2584 | 4181 | 6765 | ||
10946 | 17711 | 28657 | 46368 | 75025 | ||
数式から返された5行x5列のフィボナッチ数の配列がB2:F6の範囲に返されています。
まとめ
スピルはかなり強力な機能です。またMicrosoft 365で追加されたLET関数やSEQUENCE関数と組み合わせることでさらに強力な使い方ができることが分かりました。