ワークシート関数

作成日: 2014-11-27
最終更新日:

ワークシート関数とは

ワークシート関数とは、その名前の通り、Excel のワークシートで使う関数である。 では、ワークシート関数ではない関数が Excel であるのかというと、ある。 これは、VBA (Visual Basic for Applications) 関数と呼ばれ、プログラムとして Excel を操作するときに使う。 両者の出自は異なるものであり、同じ動作をしても名前が違ったり、同じ名前でも引数の順序や意味が違ったりということがある。

ここでは、ワークシート関数に絞って話題を展開する。

課題

次の課題を解く。 下記の表がある。一行につき、A 列から H 列まで入力されているセルのうち、一番右にあるセルの位置を I 列に表示したい。 I 列にはどのようなワークシート関数を書けばよいか。 ここで、位置は A なら 1、B なら 2、……、H なら 8 とする。 また、どの行も A 列から H 列までの少なくとも一つのセルに入力があること、 そして入力はすべて 0 以上の数値であることは保証されているものとする。

ABCDEFGHI
10.006
24.752.508
31.252.004.003

解答

I1 セルに入る計算式は次の通り。

=match(-1,A1:H1,-1)

match 関数を説明する。match(検査値,検査範囲,照合型) で使われる。 返す値は範囲内の左上が位置1となるような指標である。 検査値は、検査範囲の中でマッチングをさせたい値である。 検査範囲は上記のようにセルとセルをコロンでつないだ形で使う。 照合型は 1, 0, -1 のどれかである。 1 は検査値以下の最大の値を、0 は検査値に完全一致する値を、-1 は検査値以上の最小の値を対象にする。

通常の解説では、照合型に 1 を選んだときは検査範囲を昇順に、 -1 を選んだときは検査範囲を降順にしないといけない。 さもないと、#N/A となる、と解説している。 ここでの使い方は邪道で、-1 を検査値として使っている理由は、単にスペースではない何かの数値を見つけるためだけに使っている。 だから、0 以下の数値であればどんな値でもよい。-1 としたのは、0 より明らかに小さく、単純だからという理由である。

ここでのmatch 関数の挙動は次のようになるだろう。 検査値は -1 である。まず H1 の値を比較する。ここはブランクだから、-1 以上とはならない。次に G1 の値を比較する。ここもブランクだ。 次は F1 だ。ここは 0 という数値が入っていて -1 以上である。答えはF列、すなわち場所は 6 だ。 このようにして数値が決定される。したがって、範囲の中で値が入っている最も右のセルの場所がわかる、という仕掛けだ。

関連する本

まりんきょ学問所コンピュータの部屋表計算ソフトの部屋 > ワークシート関数


MARUYAMA Satosi