ワークシート関数 |
作成日: 2014-11-27 最終更新日: |
ワークシート関数とは、その名前の通り、Excel のワークシートで使う関数である。 では、ワークシート関数ではない関数が Excel であるのかというと、ある。 これは、VBA (Visual Basic for Applications) 関数と呼ばれ、プログラムとして Excel を操作するときに使う。 両者の出自は異なるものであり、同じ動作をしても名前が違ったり、同じ名前でも引数の順序や意味が違ったりということがある。
ここでは、ワークシート関数に絞って話題を展開する。
次の課題を解く。 下記の表がある。一行につき、A 列から H 列まで入力されているセルのうち、一番右にあるセルの位置を I 列に表示したい。 I 列にはどのようなワークシート関数を書けばよいか。 ここで、位置は A なら 1、B なら 2、……、H なら 8 とする。 また、どの行も A 列から H 列までの少なくとも一つのセルに入力があること、 そして入力はすべて 0 以上の数値であることは保証されているものとする。
A | B | C | D | E | F | G | H | I | |
---|---|---|---|---|---|---|---|---|---|
1 | 0.00 | 6 | |||||||
2 | 4.75 | 2.50 | 8 | ||||||
3 | 1.25 | 2.00 | 4.00 | 3 |
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 だ。 このようにして数値が決定される。したがって、範囲の中で値が入っている最も右のセルの場所がわかる、という仕掛けだ。
まりんきょ学問所 > コンピュータの部屋 > 表計算ソフトの部屋 > ワークシート関数