垂直照合関数の機能

垂直照合関数は、ある値と同じ値を持つセルを左端から走査し、検索したセルと同じ位置で指定した列のセルの値を結果として返す関数です。

やや少し難しそうですが、なんて事は無く単に位置関係での検索をする、という話をしているだけです。あとは、ほぼ同じパターンで覚えることができる水平照合関数もセットで覚えるのがおすすめです。

照合系関数

定義文を読んでも「ん?」という感じだと思います。基本情報技術者試験の表計算の関数には垂直照合関数、水平照合関数、照合検索関数、照合一致関数と「照合」という名称がつく関数が4つあります。

照合という名称がついた関数をまとめて、私は照合系と勝手に呼んでいますが、私がイメージする照合系関数の特徴は、求めたい値を検査範囲から検索するという、そのままのイメージです。

ある求めたい値Xがあって、その値がセル範囲中のどこかにあるとして、セル範囲の左上から右下の方へダーッと「これは値Xか?Xか?」と見つかるまで探しているのが、私が思っている照合系関数の基本的なイメージです。このことから、照合系関数の特徴としては、求めたい値が引数として必要であり、また検索する対象のセル範囲が引数として必ず含まれています。この点を意識して頂ければ照合系関数の学習は分かりやすくなります。照合系関数は合計関数や剰余関数のように、何かを計算する関数ではなく何かを探す関数なんだということになります。

垂直照合関数の書式

垂直照合(式,セル範囲,列の位置,検索の指定)

式は検索する値になります。セル参照や計算式(A1/B2とか)も記述可能です。
セル範囲
値を探す範囲になります。
列の位置
値が結果を返す列の位置の数値になります。
検索の指定
検索の指定が0の場合:式の値と一致する値を検索する。
検索の指定が1の場合:式の値以下の最大値を検索する。

垂直照合関数はとりあえず検索したい値、検索したい範囲、検索したい範囲の中の位置、の3つを覚えてあとは引数4が0と覚えておくといいと思います。指定するセル範囲は1つだけで、この1つで検索と抽出をまとめて行うことになります。

垂直照合関数の実行例

ABCDEFG
1商品コード商品単価商品コード位置垂直照合関数文字列
21001バナナ190100330垂直照合(D2,A2:C6,3,0)
31002リンゴ130
41003みかん30
51004いちご120
61005メロン250
7
8

つながっているので分かりにくいですが、A列~C列までを1つとする表、D列~E列までを1つとする表がそれぞれあるとします。また、A列とB列とC列は値と文字列のデータがあり、D列とE列は数値、F列は垂直照合関数の文字列があるとします。

つぎに、セルD2に商品コードが入力されたら対応する行の単価C列をセルE2に表示したいとします。上の例は、もうすでにセルD2には1003が入力され、セルE2に30が表示されているので分かりにくいのですが、セルD2に1003と入力すると、リターンキーを押した瞬間セルE2が30と変わるような、指定した値から検索した結果を表示したいとします。他の照合系関数でも求めることはできますが、垂直照合関数を使用してみます。どのようにするのかというと、セルE2に「垂直照合(D2,A2:C6,3,0)」と関数を入力するだけです。

照合検索の関数の引数は、

引数1は D2
引数2は A2:A6
引数3は 3
引数4は 0

となっていますが、少しわかりにくいので段階を経て見てゆきます。

1.式に入力(引数1・D2)
引数1で指定された式に、値が入力されます。例の場合の入力された値は1003です。

2.セル範囲(引数2・A2:C6)
引数1で指定されたD2に、値1003が入力されると、検索のセル範囲から同じ値のセルを検索します。この時のセル範囲の検索の仕方は、一番左端の列を上から下へ走査します。

ABCDEFG
1商品コード商品単価商品コード位置垂直照合関数文字列
21001バナナ190100330垂直照合(D2,A2:C6,3,0)
31002リンゴ130
41003みかん30
51004いちご120
61005メロン250
7
8

引数2のA2:C6は検索のセル範囲で色は青色を着けてみました。

セル範囲の一番左側を検索するのが決まりです。また一番左側の列内に同じ値が複数あった場合は、最初に出現した行が対象になります。例の場合は、上から3番目、行番号でいうと4行目が目的の行ということになります。

ABCDEFG
1商品コード商品単価商品コード位置垂直照合関数文字列
21001バナナ190100330垂直照合(D2,A2:C6,3,0)
31002リンゴ130
41003みかん30
51004いちご120
61005メロン250
7
8

3.列の位置(引数3・3)
2のセル範囲で見つかった行を対象に一番左の列から1、2、3…と数えて引数3で指定された列位置の値を結果として返します。

列の位置
列位置1が列A
列位置2が列B
列位置3が列C

例の場合は3で列番号はC列になります。今回はたまたま列Cが列位置3になりましたが、セル範囲の左端から1番目と数える決まりなので、間違えないように注意です。

2と求めた4行と3で求めたC列の交わるところ、セルC4が検索するセルになり、値は30になります。

ABCDEFG
1商品コード商品単価商品コード位置垂直照合関数文字列
21001バナナ190100330垂直照合(D2,A2:C6,3,0)
31002リンゴ130
41003みかん30
51004いちご120
61005メロン250
7
8

このように、垂直照合関数はセル範囲の左端から垂直方向に検索し、見つかったら水平方向へ引数3の値の数の分を縦から横へと絞り込むように検索してゆくのが垂直照合関数になります。

検索の指定が1の場合

先の実行例は、検索の指定が0のときの例で、検索の流れの説明を優先するため、引数4について特に触れてきませんでした。引数4は0と1が指定できると仕様に書いてありますが、違いは何なのでしょうか。仕様では

「検索の指定が1の場合:式の値以下の最大値を検索する。」

と書いてあり、引数4が1のときは、検索する値が同じである必要はなく、最大値を探すことができるようになっています。さきほどの上の例だと引数1の式の値が1003で、値1003をセル範囲の一番左端を検索し、同じ値が4行目にありましたが、もし値1003が無かった場合、引数4が0の場合は検索されずにエラーになりますが、引数4に1を指定した場合、値が一致しない場合でも値1003に近い最大値が検索されることになります。同じ値がないと予想できる場合にはこの方法が有効です。

引数4は厳格に行を検索するか、アバウトに行を検索するかという設定の違いだけで、他の手続きは一緒です。

以上、垂直照合関数でした。

垂直照合関数