Excel$\:$で遊んでたら思わぬ知見を得た。
TL; DR
結論だけ, 書く。
-
A1:B2
のコロンは「演算子」。 「範囲の結び」を意味し, 「範囲の交わり」を意味するスペース演算子と対になる。 -
A:B
のコロンは「リテラルの一部」。/[A-Z]+:[A-Z]+/
形式の「列範囲リテラル」と/[0-9]+:[0-9]+/
形式の「行範囲リテラル」が存在していて, これらのコロンは不可分。
なぜ違うと言える?
A1:B2
のコロンの前後にスペースを入れても問題なく動く(フォーマッターによってスペースは削除されるが)。
一方でA:B
のコロンの前後にスペースを入れると#NAME?
エラーとなる。
また, 戯れにA1:B2:C3
のように記述しても有効な参照となるようだ。
しかしA:B:C
では無効になる。
A:B
形式は二つしか取れないのかと思いきやA:B:C:D
は有効なのである。
ここで思いつく
#NAME?
エラーは未定義名称エラーだが, A
やB
の名前が定義されていないのにA:B
が有効だというのなら, どうもA:B
で一塊の記述らしい。
さらに思いついたのだがもしやA1:B2
で使われるほうの:
は参照に対する二項演算子なのではないか? もしそうだとすればすべてに説明がつく。
A1:B2:C3
という式は$\: {\left(\text{A1} \mathbin{:} \text{B2}\right)} \mathbin{:} \text{C3} \:$のように解釈されるので有効な参照となる。
一方でA:B:C
はA:B
で一塊であるため$\: \text{A:B} \mathbin{:} \text{C} \:$と解釈されるがC
が未定義のため#NAME?
エラーとなる。
そしてA:B:C:D
は$\: \text{A:B} \mathbin{:} \text{C:D} \:$と解釈される有効な参照であるわけだ。
二項演算子としての:
の意味は?
では二項演算子としての:
の正確な意味とはなんだろうか? 公式ではふたつのセルの間にある範囲を表す書き方と説明されているが, 実際にはひとつのセルへの参照のみならず範囲全般に使える演算子のため他の表現を考えなければならない。
簡潔かつ紛れのない定義として, 「ふたつの範囲の結び」とするのがよいだろう。 結びというのは数学の束論ででてくる用語であり, 最小上界という言い方もできる。
具体的に説明しよう。 範囲には順序関係がある。 大小関係と言い換えてもいいだろう。
大小関係と言っても, ここで定義するのは面積の大きさ(セルの数)ではない。
定義 範囲$\: R \:$上の順序関係$\: \preceq \:$を以下のように定める。
二つの範囲$\: x, y \in R \:$が$\: x \preceq y \:$を満たすとは, $x \:$に含まれるセルがすべて$\: y \:$に含まれていることをいう。
いいかえれば$\: y \:$は$\: x \:$を完全に覆うということである。 この定義では順序関係を定義できない範囲の組が存在するが, これについては問題ない(半順序集合という)。
さて, ここでふたつの範囲に対する上界を考えることができる。 上界とは, $x \preceq z \:$かつ$\: y \preceq z \:$であるような$\: z \:$のことであり, このような$\: z \:$は無数にある(いや, 実際には$\:$Excel$\:$の限界があるが)。
このなかで最小の……つまりどのような$\: z_n \:$に対しても$\: z_0 \preceq z_n \:$を満たすような$\: z_0 \:$のことを最小上界, ないし結びとよぶ。
言葉での定義では難しくてもビジュアライズされるとわかりやすいだろう。 $x \mathbin{:} y \:$は$\: x \:$と$\: y \:$の両方を完全に覆うような最小の範囲である
結び(最小上界)と対になる概念として交わり(最大下界)が存在する。 これはまさしくスペース演算子である。 スペース演算子の知名度は多分低いので覚えて帰ってほしい。