Excel 2010 検索/行列関数

  1. 検索/行列関数リストの表示
  2. 指定したセル番地を求めるADDRESS関数
  3. リストから指定した値を取りだすCHOOSE関数
  4. 列番号を求めるCOLUMN関数
  5. 配列または列数を求めるCOLUMNS関数
  6. 指定した値でテーブルまたは配列を検索した結果を求めるHLOOKUP関数
  7. 指定された行と列が交わる位置の値またはセル参照を求めるINDEX関数
  8. 指定された文字列への参照を求めるINDIRECT関数
  9. 検索結果の配列内での相対的な位置を表す数値を求めるMATCH関数
  10. 指定した参照から指定した行数/列数への参照を求めるOFFSET関数
  11. 行番号を求めるROW関数
  12. 配列または行数を求めるROWS関数
  13. 特定の値を検索して指定した列と同じ行の値を求めるVLOOKUP関数

検索/行列関数を利用することで、値を取り出したり、行や列、また配列などを操作したりすることができます。

(注) これらの関数の中には、ほかの関数と組み合わせて使うことでその力を発揮するものもありますが、このマニュアルでは、一部を除き、基本的な使い方を紹介します。

サンプルデータsearch-rc-function_es.xlsx「検索・行列関数(演習)」を開きます。

尚、このマニュアルでは特に断らない限り、ショートカットキーで「関数の挿入」ダイアログ ボックスを開き、「関数の分類」から関数名のリストを表示させる手順で説明します。

その他の方法での関数の入力手順については関数の入力方法を参照してください。

検索/行列関数リストの表示

「関数の挿入」ダイアログ ボックスでは、以下の手順で検索/行列関数リストを表示させることができます。

(注) 各関数の入力手順の説明は、関数名のリストが表示された状態から行います。


指定したセル番地を求めるADDRESS関数

ADDRESS関数は、指定した行番号と列番号のセル番地を求めます。

例えば、ADDRESS(4,6)は「$F$4」を返します。

この関数は、ROW関数やCOLUMN関数など、ほかの関数と組み合わせることにより、さまざまな利用法があります。

【書式】 =ADDRESS(行番号,列番号,[参照の型],[参照形式],[シート名])

【説明】 行番号: 必ず指定します。セル参照に使用する行番号を指定します。列番号: 必ず指定します。セル参照に使用する列番号を指定します。

参照の型: 省略可能です。返される参照の種類を指定する数値です。

参照の型結果として返される参照形式
1 または省略絶対参照($A$1)
2行は絶対参照、列は相対参照(A$1)
3行は相対参照、列は絶対参照($A1)
4相対参照(A1)

参照形式: 省略可能です。「A1」または「R1C1」形式を指定します。

参照形式を省略するか「TRUE」を指定すると「A1形式」となり「FALSE」を指定すると「R1C1形式」となります。

シート名: 省略可能です。セル参照を行うシート名を指定します。省略すると現在のシートが対象となります。

例えば、=ADDRESS(2,1,,,"Sheet2")の場合「Sheet2!$A$2」を返します。

ここでは、シート「ADDRESS」のセルA6に、行番号と列番号を指定したセル番地を絶対参照で表示します。

シート「ADDRESS」を選択します。


リストから指定した値を取りだすCHOOSE関数

CHOOSE関数は、値リストからインデックスで指定した番号に一致する値を取り出します。値リストは、最大254個まで指定できます。また、値リストはセル範囲での指定も可能です。

【書式】 =CHOOSE(インデックス,値1,[値2],...)

【説明】 インデックス: 必ず指定します。値リストの何番目の値を取り出すかを番号で指定します。1〜254まで指定できます。

値1: 必ず指定します。対象となる値リストの最初の値です。

値2,...: 省略可能です。値は最大254個まで指定できます。

(1) リストからインデックスに対応する値を取り出す

まず、リストからインデックスに対応する値を取り出す手順を説明します。

ここでは、シート「CHOOSE(1)」のセルC6に、セルB6からB12の値リストの中から、セルA6のインデックスで指定した値を取り出して表示します。

シート「CHOOSE(1)」を選択します。

2) リスト中のインデックスに対応するセル範囲を集計する

次に、CHOOSE関数の利用例として、値リストがセル範囲の場合に、インデックスで指定したセル範囲を集計する手順を説明します。

ここでは、シート「CHOOSE(2)」のセルE6に、セルB6からD8の値リストの中から、セルA6のインデックスで指定したセル範囲を合計して表示します。

シート「CHOOSE(2)」を選択します。


列番号を求めるCOLUMN関数

COLUMN関数は、指定したセル参照の列番号を返します。

【書式】 =COLUMN([範囲])

【説明】 範囲: 省略可能です。列番号を調べるセルまたはセル範囲を指定します。

省略すると、関数が入力されているセルの列番号を返します。

ここでは、シート「COLUMN」のセルA4に、セルB4の列番号を表示します。

シート「COLUMN」を選択します。


配列または列数を求めるCOLUMNS関数

COLUMNS関数は、配列または指定したセル範囲の列数を返します。

(注) 配列とは、複数のデータをひとまとめにしたものです。

例えば、1週間を考えるとき「週」は配列であり、それぞれの曜日は配列を構成するデータです。

また、配列には1次元と2次元があります。1次元配列では、配列の何番目かを指定することでデータを特定できます。

2次元配列では、縦方向と横方向を指定することでデータを特定します。

【書式】 =COLUMNS(配列)

【説明】 配列: 必ず指定します。列数を求める配列またはセル範囲を指定します。

ここでは、シート「COLUMNS」のセルD4に、セルA4からC6までの配列に含まれる列数を表示します。

シート「COLUMNS」を選択します。


指定した値でテーブルまたは配列を検索した結果を求めるHLOOKUP関数

HLOOKUP関数は、指定したテーブルまたは配列の上端行で値を検索し、その値と同じ列の指定した行の値を返します。

【書式】 =HLOOKUP(検索値,範囲,行番号,[検索の型])

【説明】 検索値: 必ず指定します。「範囲」の上端行で検索する値を指定します。

範囲: 必ず指定します。検索対象となるデータが含まれるテーブルを指定します。

行番号: 必ず指定します。目的のデータが入力されている行を、「範囲」の上端からの行数で指定します。

検索方法: 省略可能です。「TRUE」または省略すると、検索値が見つからない場合に、検索値未満で最も大きい値を返します。

「FALSE」を指定すると、検索値と完全に一致する値だけが検索対象となり、見つからない場合はエラー値「#N/A」が返されます。

(注) 検索方法に「TRUE」を指定するか省略する場合、「範囲」は上端行のデータで横方向に昇順で並べ変えておく必要があります。「FALSE」の場合は不要です。

ここでは、シート「HLOOKUP」のセルB4に、セルA4の値でセルA6からG6を検索し、対応するセルA7からG7の値を表示します。

シート「HLOOKUP」を選択します。


指定された行と列が交わる位置の値またはセル参照を求めるINDEX関数

INDEX関数は、テーブルまたはセル範囲にある値、またはその値のセル参照を返します。

INDEX関数には、配列形式とセル範囲形式の2つがあります。

(1) 配列形式

配列形式は、行番号と列番号で指定されるテーブルまたは配列の要素の値を返します。

【書式】 =INDEX(配列,行番号,[列番号])

【説明】 配列: 必ず指定します。セル範囲または配列定数を指定します。

行番号: 必ず指定します。配列の中で値を返す行を数値で指定します。行番号を省略した場合は、必ず列番号を指定する必要があります。

列番号: 省略可能です。配列の中で値を返す列を数値で指定します。列番号を省略した場合は、必ず行番号を指定する必要があります。

ここでは、シート「INDEX(1)」のセルC6に 、セルB10からH16の中で、セルA6とセルB6で指定する行と列が交わった位置の値を表示します。

シート「INDEX(1)」を選択します。

(2) セル範囲形式

セル範囲形式は、指定された行と列が交わる位置のセル参照を返します。

隣接していない複数のセル範囲を指定した場合、その中から任意の領域を選択できます。

【書式】 =INDEX(範囲,行番号,[列番号],[領域番号])

【説明】 範囲: 必ず指定します。1つまたは複数のセル参照を指定します。

領域を複数選択する場合は、範囲を「()」(カッコ)で囲み、それぞれの領域の間を「,」(コンマ)で区切ります。

行番号: 必ず指定します。範囲の中で、セル参照を返す行を数値で指定します。

列番号: 省略可能です。範囲の中で、セル参照を返す列を数値で指定します。

領域番号: 省略可能です。「範囲」を複数指定した場合、どの領域を対象とするかを数値で指定します。省略すると「1」とみなされます。

ここでは、シート「INDEX(1)」のセルD6に、セルB10からH16の中で、セルA6とセルB6で指定する行と列が交わった位置の値を表示します。

シート「INDEX(1)」を選択します。

(注) この場合は領域が1つなので、配列の場合と同じ結果となります。

(3) 他の関数との組み合わせで値を表示する

INDEX関数は、ほかの関数と組み合わせて使うことで、より効果的に利用できます。

ここでは、シート「INDEX」において、MATCH関数を併用しながら、出発駅と到着駅を入力することで、INDEX関数により運賃を求めます。

MATCH関数については検索結果の配列内での相対的な位置を表す数値を求めるMATCH関数を参照してください。

シート「INDEX(2)」を選択します。

まずは、MATCH関数により、出発駅と到着駅の行と列の位置を求めます。

次に、セルC4とD4の値により、INDEX関数を利用して、セルE6に運賃を表示します。


指定された文字列への参照を求めるINDIRECT関数

INDIRECT関数は、セルに入力されている文字列により、間接的にセルの指定を行います。

例えば、=INDIRECT("A1")は、セルA1の内容を表示します。

【書式】 =INDIRECT(参照文字列,[参照形式])

【説明】 参照文字列: 必ず指定します。表示したい値が入力されているセル番地、または名前などを指定します。

参照形式: 省略可能です。セル参照の種類を指定します。「TRUE」または省略で「A1形式」とみなされます。

「FALSE」を指定すると「R1C1形式」とみなされます。

ここでは、シート「INDIRECT」のセルB4に、セルA7からH14までの中で、セルA4に入力されている文字列に該当するセル番地の値を表示します。

シート「INDIRECT」を選択します。


検索結果の配列内での相対的な位置を表す数値を求めるMATCH関数

MATCH関数は、対象となるセル範囲を検索し、検索結果のセル範囲内での相対的な位置を返します。

例えば、セルA3からA5に、それぞれ10、20、30が入力されている場合、=MATCH(20,A3:A5,0)は、検索結果がセル範囲の2番目にあることから「2」を返します。

また、INDEX関数などと組み合わせることにより、さまざまな利用法があります。

詳しくは指定された行と列が交わる一の値またはセル参照を求めるINDEX関数を参照してください。

【書式】 =MATCH(検査値,検査範囲,[照合の型])

【説明】 検査値: 必ず指定します。 検査範囲の中で検索する値を指定します。

検査範囲: 必ず指定します。検索するセル範囲を指定します。

照合の型: 省略可能です。「-1」「0」「1」のいずれかを指定します。省略すると「1」とみなされます。

照合の型により以下のように動作します。

ここでは、シート「MATCH」の指定したセル範囲内での行方向と列方向の位置を表示する手順を説明します。

(1) 行方向の位置を表示する

まず、セルB4に、セルB8からH8までの間で、セルA4の値が存在する相対的な位置を表示します。「照合の種類」は「完全一致」とします。

シート「MATCH」を選択します。

(2) 列方向の位置を表示する

次に、セルB5に、セルA9からA15までの間で、セルA5の値が存在する相対的な位置を表示します。「照合の種類」は「完全一致」とします。

シート「MATCH」を選択します。


指定した参照から指定した行数/列数への参照を求めるOFFSET関数

OFFSET関数は、基準となるセルまたはセル範囲から、指定した行数および列数だけシフトした位置にあるセルの値や、指定した高さと幅のセル範囲を返します。

【書式】 =OFFSET(基準,行数,列数,[高さ],[幅])

【説明】 基準: 必ず指定します。基準となるセルまたはセル範囲を指定します。

行数: 必ず指定します。基準からシフトする行数を数値で指定します。行数に正の数を指定すると、下方向にシフトし、負の数を指定すると、上方向にシフトします。

列数: 必ず指定します。基準からシフトする列数を数値で指定します。列数に正の数を指定すると、右方向にシフトし、負の数を指定すると、左方向にシフトします。

高さ: 省略可能です。オフセット参照の行数を指定します。

幅: 省略可能です。オフセット参照の列数を指定します。

ここでは、シフト先のセルの値を表示させる手順と、オフセット参照範囲を合計する手順を説明します。

(1) シフト先のセルの値を表示する

まず、セルA6に、セルB6から指定した行と列をシフトさせたセルの値を表示します。

シート「OFFSET(1)」を選択します。

(2) シフト先の指定範囲を集計する

次に、セルA6に、セルB6から指定した行と列をシフトさせ、指定した高さと幅の範囲の合計を表示します。

シート「OFFSET(2)」を選択します。


行番号を求めるROW関数

ROW関数は、指定したセル参照の行番号を返します。

【書式】 =ROW([範囲])

【説明】 範囲: 省略可能です。行番号を調べるセルまたはセル範囲を指定します。

省略すると、関数が入力されているセルの行番号を返します。

ここでは、シート「ROW」のセルA4に、セルB4の行番号を表示します。

シート「ROW」を選択します。


配列または行数を求めるROWS関数

ROWS関数は、配列または指定したセル範囲の行数を返します。

(注) 配列とは、複数のデータをひとまとめにしたものです。

例えば、1週間を考えるとき「週」は配列であり、それぞれの曜日は配列を構成するデータです。

また、配列には1次元と2次元があります。1次元配列では、配列の何番目かを指定することでデータを特定できます。

2次元配列では、縦方向と横方向を指定することでデータを特定します。

【書式】 =ROWS(配列)

【説明】 配列: 必ず指定します。行数を求める配列またはセル範囲を指定します。

ここでは、シート「ROWS」のセルD4に、セルA4からC6までの配列に含まれる行数を表示します。

シート「ROWS」を選択します。


特定の値を検索して指定した列と同じ行の値を求めるVLOOKUP関数

VLOOKUP関数は、指定したテーブルまたは配列の左端行で値を検索し、その値と同じ行の指定した列の値を返します。

【書式】 =VLOOKUP(検索値,範囲,列番号,[検索の型])

【説明】 検索値: 必ず指定します。「範囲」の左端行で検索する値を指定します。

範囲: 必ず指定します。検索対象となるデータが含まれるテーブルを指定します。

列番号: 必ず指定します。目的のデータが入力されている列を、「範囲」の左端からの列数で指定します。

検索方法: 省略可能です。「TRUE」または省略すると、検索値が見つからない場合に、検索値未満で最も大きい値を返します。

「FALSE」を指定すると、検索値と完全に一致する値だけが検索対象となり、見つからない場合はエラー値「#N/A」が返されます。

(注) 検索方法に「TRUE」を指定するか省略する場合、「範囲」は左端行のデータで縦方向に昇順で並べ変えておく必要があります。「FALSE」の場合は不要です。

ここでは、シート「VLOOKUP」のセルB4に、セルA4の値でセルA6からA12を検索し、対応するセルB6からB12の値を表示します。

シート「VLOOKUP」を選択します。

操作の結果はサンプルデータsearch-rc-function_kk.xlsx「検索・行列関数(結果)」をご覧ください。