演算子
以下の表は、演算子の種類とそれらの優先順位を示しています。優先順位の値が小さいものほど、先んじて処理が行われます。
優先順位 | 演算子 | 説明 | 演算結果 |
---|---|---|---|
1 | : | セル範囲を表す参照を生成します。 | 参照 |
2 | 空白文字 | 分かり難いですが、空白文字「 」はセル範囲の積を返す演算子です。 | 参照 |
3 | , | セル範囲の和を返します。 | 参照 |
4 | + | 符号の反転を行わない単項演算子です。つまり、実際には何も行いません。 | 数値 |
- | 符号の反転を行う単項演算子です。 | 数値 | |
5 | % | 百分率を表す単項演算子です。実際には単に数値を100で除すだけの演算子です。 | 数値 |
6 | ^ | 累乗を計算します。 | 数値 |
7 | * | 乗算を行います。 | 数値 |
/ | 除算を行います。 | 数値 | |
8 | + | 加算を行います。 | 数値 |
- | 減算を行います。 | 数値 | |
9 | & | 文字列を結合します。 | 文字列 |
10 | = | 右辺と左辺が等しいか否かを検証します。 | 論理値 |
< | 左辺が右辺よりも小さいか否かを検証します。 | 論理値 | |
> | 左辺が右辺よりも大きいか否かを検証します。 | 論理値 | |
<= | 左辺が右辺以下か否かを検証します。 | 論理値 | |
>= | 左辺が右辺以上か否かを検証します。 | 論理値 | |
<> | 右辺と左辺が異なるか否かを検証します。 | 論理値 |
演算子の多くは二項演算子です。つまり、「A1+A2」のように、演算子の左右に1つずつ被演算項を記述する演算子です。しかし、優先順位「4」の「+」と「-」、そして優先順位「5」の「%」は単項演算子です。これらには被演算項が1つしか存在しません。単項演算子である「+」と「-」の被演算項は演算子の直後に記述します。例えば「-A1」という数式の場合、被演算項は「A1」です。「%」の被演算項は演算子の直前に記述します。例えば「15%」という数式の場合、被演算項は「15」です。
優先順位「1」~「3」の演算子は全て、セル範囲への参照を返す演算子です。優先順位「1」のコロン「:」は、始点と終点からセル範囲を生成するための演算子です。例えば「A3:A5」という数式は、「A3」を始点、「A5」を終点とするセル範囲を表します。
大変分かり難いのですが、優先順位「2」の空白文字「 」とは、キーボードのスペースキーを押下して入力する、何も表示されない、本当に単なる空白文字です。この単なる空白文字も、セル範囲の積を生成するための立派な演算子なのです。セル範囲の「積」とは何でしょう。例えば「A1:A3 A2:A4」という数式の場合を考えてみます。コロン「:」の優先順位は空白文字「 」よりも高いため、この数式は「(A1:A3) (A2:A4)」と等価です。そのため、空白文字「 」の被演算項は、「A1:A3」と「A2:A4」の2つのセル範囲です。
これらのセル範囲には、一部、重なる部分があります。「積」とは、双方のセル範囲のどちらにも含まれる、この重なった部分のことを指します。つまり、この例の場合、演算結果はセル範囲「A2:A3」ということになります。
もし、重なる部分が存在しない2つのセル範囲に対して積を求めた場合、どうなるでしょう。例えば「A1 A2」という数式は、A1でもあり、且つ、A2でもあるという、あり得ないセル範囲を求めていますが、勿論、そのようなセル範囲は存在しません。この例のように、求めるセル範囲が存在しなかった場合、この演算子は空集合を表すエラー値「#NULL!」を返します。
優先順位「3」のカンマ「,」はセル範囲の和を生成します。「和」とは、単純に言ってしまえば、2つのセル範囲の結合です。例えば「A1:A3,A2:A4」という数式からは、セル範囲「A1:A4」が生成されます。
優先順位「4」には、前述のように、2つの単項演算子が含まれます。特に難しいことはありませんが、数式の記述の仕方によっては、一見、意味不明に見える場合があります。例えば「A1+-+A2」という数式はどうでしょう。この数式は「A1+(-A2)」と等価です。1つ目の「+」は、単項演算子ではなく、加算を表す二項演算子なのですが、加算を表す「+」の優先順位は「8」で、単項演算子の「+」や「-」よりも優先順位が低いため、まず先に処理されるべきは二項目の「-+A2」です。「-+A2」は「-A2」と等価であるため、結局、「A1+-+A2」は「A1+(-A2)」と等価ということになるのです。
優先順位「6」のキャレット「^」は累乗を行う演算子です。例えば「2^3」という数式は2の3乗を意味します。指数は二項目に記述されます。
優先順位「7」には乗算と除算が含まれます。算数では乗算は「×」、除算は「÷」で表しますが、計算機の世界では一般に、乗算はアスタリスク「*」、除算はスラッシュ「/」で表します。例えば「2/3」という数式は、2を3で割るということを意味します。除算の場合、除数(分数で言うところの分母)を二項目に記述します。
優先順位「9」のアンパサンド「&」は文字列の結合を行う演算子です。例えば「"ABC"&"XYZ"」という数式は、2つの文字列「ABC」と「XYZ」を結合して「ABCXYZ」という文字列を生成します。仮に被演算項が文字列でなかったとしても、値を強制的に文字列に変換して結合を行います。例えば数式として「1.23&"cm"」と記述した場合、一項目の「1.23」という数値は文字列「"1.23"」として扱われます。
優先順位「10」の演算子は全て比較演算子です。比較の結果、数式を満たしていれば真値「TRUE」、満たしていなければ偽値「FALSE」を返します。例えば「A1>=3」という数式は、セルA1の値が3以上であれば「TRUE」、そうでなければ「FALSE」を返します。