Excelにあるこれなんだろうなって思っている範囲指定があるんです。
=SUM(A1:C3 B2:B5)
C3とB2の間に半角空白が入ってるんです。
これって、A1からC3の範囲とB2からB5の範囲とが重なった、B2からB3の範囲が指定されるということなんです。
はてさて、これ、何に使うのでしょうか。正直思い当たらないのですが、もしかしたら面白い使い方ができるのかなと思っていますので、今、わかっているところまで解説してみます。
なんかいい実務に使えそうなテクニックがあればお教えください。
参照演算子
Microsoftの公式サイトで調べたところ、空白で範囲を区切る指定は「参照演算子」の一つだそうです。
参照演算子は、半角空白のほかに、おなじみの連続する範囲を示す「:」、離れた範囲を示す「,」の3つがあるそうです。
つまり半角空白一つは、セルの参照範囲を示すものの一つのようです。
空白の参照演算子の基本
上記で書いた通り、参照演算子は指定されているすべての範囲のすべてで指定されている範囲、重なった範囲ということもできると思います。
=SUM(A1:G8 C1:D10 A5:H6)
は次の図の通りになります。
重なってるのは、C5からD6の範囲なので、
=SUM(C5:D6)
と同じ式です。
空白の参照演算子とINDIRECT関数との組み合わせ
上の例だけではあまりにも応用ができない気がするので、変動する関数と組み合わせてみたらどうかなと思って、ちょっとやってみようと思って一番初めに思いつくのはINDIRECT関数との組み合わせじゃないでしょうか。
=SUM(A1:G8 INDIRECT(H1))
として、セルH1に「C1:D10」と入力すれば、C1からD8の範囲を重なり範囲とすることができます。
空白の参照演算子とOFFSET関数との組み合わせ
INDIRECT関数と同じく範囲を設定できるOFFSET関数との組み合わせも考えられます。
=SUM(A1:G8 OFFSET(A1,0,0,H1,H2))
とし、セルH1に10、セルH2に5と入力すると、OFFSET関数はA1からE10の範囲を求めるので、重なりとしては、A1からE8の範囲の合計を求めます。
空白の参照演算子とINDEX関数との組み合わせ
INDEX関数は縦、横に0を指定すると、全部を選択する範囲を指定することができますので、これを使って組み合わせてみることもできます。
=SUM(A1:G8 INDEX(C:F,0,H1))
とし、セルH1に3と入力すれば、INDEX関数の指定される範囲はE列全部となるので、重なり範囲はE1からE8の合計になります。
空白の参照演算子とカンマの参照演算子の組み合わせ
こんな指定もできます。
=SUM(A1:G10 A1,A3,A5)
A1:G10の中のA1、A3、A5の合計になります。
=SUM(A1:G10 A1,OFFSET(A1,0,0,H1,H2),A5)
こんなトンデモ指定もできます。ここまでいくと何かの応用ができるんじゃないかと思います。
=SUM(A1:G10 INDIRECT(“B1:B5”))
はできるのですが、
=SUM(A1:G10 INDIRECT(“B1,B5”))
はできません。
これができるとADDRESS関数とかTEXTJOIN関数と組み合わせて範囲のマスクができるんじゃないかなって思っています。
#NULLエラー
この演算子を使う時にのみ、Excelは#NULLのエラーを出します。
重なりの範囲が1セルも一致していないと#NULLエラーになります。
これ、本当にケースが少ないので、#NULLって何ですか?って質問されると答えにくいのですが、こういうことだったのですね。
コメント