Excel (エクセル) 学習室 / KENZO30


エクセル中級 22

中級・特別編トップへ

Excel(エクセル)学習室 HOME

   中 級 22

Excelの基礎

  検索/行列関数(VLOOKUP関数)   
  検索/行列関数(HLOOKUP関数)       

 

 

検索/行列関数(VLOOKUP関数)

検索/行列関数について

検索/行列関数は、表やリストなどから検索条件に一致するデータを抽出したり、セルの位置を求めたりするための関数です。分析ツールからのアドイン関数はなく、すべて標準のままでセットされています。
通常、16種類と言われていますが、Excel2000の関数貼り付けボックスには、17種類表示されます。これは、貼り付けボックスに、GETPIVOTDATA関数が入っているためです。ヘルプを見るとGETPIVOTDATA関数は、データベース関数に分類されているものなのです。あるマニュアル本では、検索/行列関数に入っていたりします。

こうした混乱?は、検索/行列関数だけでなく他の関数でもいくつか見られますが、分類処理が上手く出来ていないのかもしれません。

 

 

VLOOKUP関数

VLOOKUP関数は、下段のHLOOKUP関数と共に検索/行列関数の代表的なものです。実務でもよく使われています。
VLOOKUP関数は、リストや表の指定した範囲の中で、左端の列内から検索値を検索し、指定した列からそれに該当するデータを返す(求める)関数です。列ラベルがあり、列毎にデータが入力されたリスト形式の表の検索に向いています。

書式で表すと、VLOOKUP(検索値, 範囲, 列番号, 検索の型)となります。
引数の検索値は、範囲 の左端の列で検索する値を指定します。検索値 には、値、セル参照または文字列が使用できます。範囲には、目的のデータが含まれているセル範囲を指定します。この指定範囲は、名前を付けて指定することもできます。列番号は、範囲内で目的のデータが入力されている列を、左端から数えた列数で指定します。
検索の型
は、検索値 と完全に一致する値だけを検索するのか、一致する値がない場合は検索値未満で最も大きい値を検索するかを理論値などで指定します。指定方法は、下記の表のとおりです。

検索の型(VLOOKUP、HLOOKUP共通)

検索目的

指定理論値

理論値の代用

データの並べ替え

完全に一致する値だけを検索

FALSE

0(ゼロ)

必要なし
一致する値がない場合、検索値未満で最も大きい値を検索

TRUE

省略あるいは0(ゼロ)以外

VLOOKUPの場合は、左端の列を基準に行を昇順に並べ替え
HLOOKUPの場合は、上端行を基準に列を昇順の並べ替え

検索値と一致する値がなく、検索値未満で最も大きい値を検索する場合は、データを昇順に並べ替えて置かないと、正確な答えを得ることができません。(VLOOKUPとHLOOKUPでは基準が異なる。)

 

使用例 1


左図は、VLOOKUP関数の一般的な使用例です。
検索値は、A13でセル参照としています。範囲もA3:C9でセル範囲を参照しています。列番号は、範囲内で左から2列目の列の賃料を求めていますので、「2」としています。検索の型は、完全に一致する値とするため「0」としています。

下記の表は、上記図からVLOOKUP関数を理解するためにの応用例です。

例    題

関数式(変更点は表示)

同じ式で検索値を直接指定する場合 =VLOOKUP(4,A3:C9,2,0)            =2,000
同じ式で検索の型を理論値で表す場合 =VLOOKUP(A13,A3:C9,2,FALSE)      =2,000 
同じ式で手数料を求める場合 =VLOOKUP(A13,A3:C9,3,0)           =200
同じ式で範囲に「参照」と名前を付けた場合 =VLOOKUP(A13,参照,2,0)           =2,000
使用時間7時間を求める場合(直接指定) =VLOOKUP(7,A3:C9,2) 検索の型を省略  =3,000

最下段の例では、検索の型を省略し、使用時間7時間という、中途の時間の賃料を求めています。結果は、3,000円となっています。検索の型を省略する場合と指定する場合の違いを理解しましょう。

 

使用例 2


左図は、VLOOKUPの利用方法としてよく見られるものです。
下の製品リスト表から、製品コード番号で製品名と保管倉庫名を抽出するようになっています。
ただし、図では、エラー値が返されています。これは、検索値の製品コードが入力されていないためです。

このようにエラー値が返されていても、特に問題なければそのままでもいいのですが、かっこよく見せるには、もう一工夫必要です。

=IF(A2="","",VLOOKUP(A2,A6:D12,4,0))         

とすれば、検索値の製品コードが空白の場合は、空白を返し、検索値が入力された場合のみVLOOKUP関数が検索します。
これは、エラー値を回避するのによく使われる方法の一つです。他にもいろいろな方法があります。VLOOKUP関数は、質問掲示板でも多くの質問が寄せれていますので、参考に見てください。

 

先頭へ戻る

 

 

行列/検索関数(HLOOKUP関数)

HLOOKUP関数

HLOOKUP関数は、列方向(横方向に)データが入力された表などから、指定した範囲の中で上端の行から検索値を検索し、指定した行からそれに該当するデータを返す(求める)関数です。VLOOKUP関数と似ていますが、VLOOKUPが縦方向の表に適しているのに対し、HLOOKUPは横方向の表からデータを抽出するのに適しています。
LOOKUPの前についているHは、Horizontal(水平の、横の)と言う意味であり、Vは、Vertical(垂直の、縦の)の意味です。

書式で表すと、HLOOKUP(検索値, 範囲, 行番号, 検索の型)となります。
引数の検索値は、範囲 の上端の行で検索する値を指定します。検索値 には、値、セル参照または文字列が使用できます。範囲には、目的のデータが含まれているセル範囲を指定します。この指定範囲は、名前を付けて指定することもできます。行番号は、範囲内で目的のデータが入力されている行を、上端から数えた行数で指定します。
検索の型
は、検索値 と完全に一致する値だけを検索するのか、一致する値がない場合は検索値未満で最も大きい値を検索するかを理論値などで指定します。指定方法は、上段のVLOOKUP関数の検索の型の表を参照してください。

 

使用例


左図は、売上表からHLOOKUP関数で検索月の売上金額を抽出したものです。
検索値は、D3でセル参照としています。範囲もB6:J10でセル範囲を参照しています。

列番号は、「佐々木」の売上金額(範囲内で上から3行目)なので、「3」としています。検索の型は、完全に一致する値とするため「0」としています。
この例の場合もVLOOKUP関数の例と同じく、検索月が未入力の時、「#N/A」のエラー値が返されるので、

=IF(D3="","",HLOOKUP(D3,B6:J10,3,0))

として回避することができます。

なお、このような表の場合、VLOOKUP関数でも検索することは可能です。
=VLOOKUP("佐々木",A7:J10,5,0) となりますが、横に伸びる表は、やはりHLOOKUPのほうが便利です。
ただし実務では、リスト形式で縦に作表することが多く、VLOOKUP関数を使うことの方が多いものです。

 

   先頭へ戻る   

 

中級・特別編トップへ

Excel(エクセル)学習室 HOME


KENZO30 内容の無断転載は、禁止しています