わえなび ワード&エクセル問題集

当サイトはWordとExcelの実力を鍛える最高水準の特訓問題集です。リンクを張るのは自由です。みんなで勉強しましょう!

垂直照合、水平照合、照合検索、表引き、照合一致の関数を自分の言葉で説明しよう【基本情報技術者試験対策・表計算】

ExcelのVLOOKUP・INDEX・MATCHなどは検索関数と呼ばれ、二次元の表(配列)からデータを取得する関数です。検索関数を習得するためにはデータを検索して結果を取得するまでの流れを自分の言葉で説明できるようにすることが大事です。

基本情報技術者試験(午後試験・問13表計算)でも検索関数が毎回出題されます。基本情報はパソコンの試験ではなくマークシート方式の試験なので、出題されるパターンも決まっているので確実に得点したいところです。

そこで、今回はExcelを使いながら、基本情報技術者試験の頻出パターンについて解説します。

目次

1.基本情報技術者試験の表計算について

基本情報技術者試験の問題に使用される関数の説明についての著作権はIPA情報処理推進機構にあります(IPA公式サイト:https://www.jitec.ipa.go.jp/)。また、基本情報技術者試験(表計算)の詳細は、市販のテキストをご覧ください。

 

2.基本情報技術者試験で出題される検索関数

基本情報の検索関数の仕様はExcelとほぼ同じなので、Excelを用いて練習することができます。

  • VLOOKUP・・・垂直照合(式,セル範囲,列の位置,検索の指定)
  • HLOOKUP・・・水平照合(式,セル範囲,列の位置,検索の指定)
  • LOOKUP・・・照合検索(式,検索のセル範囲,抽出のセル範囲)
  • INDEX・・・表引き(セル範囲,行の位置,列の位置)
  • MATCH・・・照合一致(式,セル範囲,検索の指定)

これらの関数の基本的な使い方についてはこちらの記事をご覧ください。

 

3.基本の3パターンを自分の言葉で説明せよ!

別の表からデータを取ってくる手法には、3つのパターン(定石)があります。数式を作る前に、どのような流れでデータを取得するのか説明できなければなりません。説明できれば式も作れます。

(1)小さいマスタ→大きい表

問題

シートXのセルA3から始まる表Xと、シートYのセルA3から始まる表Yがある。表XのE列「取引先名」を求める方法を説明しなさい。

f:id:waenavi:20191003224127j:plain

f:id:waenavi:20191003215332j:plain

 

解説

Point 1. 試験に出題される大きい表とは何か?

大量のデータを管理するための表は、定められた規則に従って合理的・理論的に正しく入力しなければなりません。大量のデータを管理するにはすべての物、人、出来事などにコード(管理番号、IDともいう)を付けます。コード番号を付けることがデータ管理の第一歩と言えます。これによって表計算ソフトで正しく集計・分析ができます。

f:id:waenavi:20191003220007j:plain

 

基本情報技術者試験に出題される大きい表(問題文の最初に登場する表)は、会社に何らかのデータベースシステムがあることを前提として、そこに記録された大量のデータの一部を取り出したものであり、その中には必ず「コード番号の列」があります。

f:id:waenavi:20191003220557j:plain

 

Point 2. マスタとは何か?

コードは必ず半角英数または数字(ASCIIコードという)とし、あいまいなコードは完全に排除しなければなりません。

f:id:waenavi:20191003232332j:plain

 

しかし、半角英数または数字しか使えないので、そのコードの意味を説明するための別表が必要となります。これを「マスタ」といいます。

f:id:waenavi:20191003222725j:plain

 

Point 3. 検索値・検索範囲・抽出範囲

元の表にコードの意味を表示するためには、まず、対象となるコード(検索値)をマスタの中のコードが並んでいる列(検索範囲)から探します。

f:id:waenavi:20191003223454j:plain

 

コードが見つかったら、求めたい答えが並んでいる列(抽出範囲)へ横向きに移動します。

f:id:waenavi:20191003223601j:plain

 

その答えを返します。数式を作るときには、検索値・検索範囲・抽出範囲が何かを説明できなければなりません。

f:id:waenavi:20191003223755j:plain

 

セルE4に取引先名を求めるためには、セルC4(取引先ID)を検索値として、マスタで検索します。

f:id:waenavi:20191003224551j:plain

 

コードが並んでいる検索範囲はシートY!A4:A302、答えが並んでいる抽出範囲はシートY!B4:B302(2列目)です。

f:id:waenavi:20191003224841j:plain

 

Point 4. 数式の仕様に当てはめる

垂直照合(VLOOKUP)の場合、検索範囲を左端列として抽出範囲と合わせて範囲選択をするので、「=垂直照合(C4,シートY!A$4:B$302,2,0)」となります。なお、縦向きのオートフィルなので範囲は行番号の固定となります。第4引数は完全一致なので0です。

ちなみに、コード番号が縦に並んでいる場合は垂直照合で、横に並んでいる場合が水平照合(HLOOKUP)です。

f:id:waenavi:20191003231406j:plain

 

照合検索(LOOKUP)の場合、「=照合検索(C4,シートY!A$4:A$302,シートY!B$4:B$302)」となります。

f:id:waenavi:20191003231507j:plain

 

表引き(INDEX)の場合、照合一致(MATCH)で行番号を求めます。「=表引き(シートY!B$4:B$302,照合一致(C4,シートY!A$4:A$302,0),1)」となります。照合一致の第3引数は完全一致なので0です。

f:id:waenavi:20191003232744j:plain

 

Point 5. 空白の場合は空白を返す

なお、検索値(C列)が空白の場合は、それに対応する答えが無いので、IFを用いてエラーを回避しなければなりません。

  • =IF(C4 = null, ' ', ~~~)

f:id:waenavi:20191003232201j:plain

 

(2)大きい表→抽出

問題

シートXのセルA3から始まる表Xと、シートYのセルA3から始まる表Yがある。表YのC列「取引開始日」を求める方法を説明しなさい。ただし、取引開始日は各取引先の日付の最小値とし、取引が無い場合は「取引無し」としなさい。

f:id:waenavi:20191003232456j:plain

f:id:waenavi:20191003232608j:plain

 

解説

Point 1. 大きい表から必要なデータを取り出す

基本情報技術者試験では、小さい表から大きい表にデータを転記する問題より、大きい表から小さい表にデータを転記する問題のほうが多いです。何らかのシステムから抽出した大きい表をもとに、分析して資料を作るというのが自然な流れです。

まず、小さい表に探したいコードを入力します。これが検索値です。

f:id:waenavi:20191003233320j:plain

 

大きい表を上から検索します(検索範囲)。見つかったら同じ行で別の列のデータを取得します(抽出範囲)。その答えを表示します。

f:id:waenavi:20191004001400j:plain

 

Point 2. 垂直照合が使えないパターン

セルC4に答えを求めるための検索値はセルA4です。

f:id:waenavi:20191004001623j:plain

 

コードが並んでいる検索範囲はシートX!C4:C1002、答え(日付)が並んでいる抽出範囲シートX!B4:B1002です。答えを求める抽出列が、検索列より左にある場合は垂直照合(VLOOKUP)が使えません(そういう仕様だから仕方がない)。

f:id:waenavi:20191004001725j:plain

 

この場合は表引き(INDEX)で求めます。「=表引き(シートX!B$4:B$1002,照合一致(A4,シートX!C$4:C$1002,0),1)」となります。日付が昇順に並んでいて、最初に見つかった日付を返すので、結果として、最小の日付が返ってきます。

f:id:waenavi:20191004002150j:plain

 

Point 3. 取引がない場合

条件付個数(COUNTIF)で取引先コードが無ければ取引が無いことが分かります。

  • =IF(条件付個数(C$4:C$1002,=A4)=0, '取引無し', 表引き(シートX!B$4:B$1002,照合一致(A4,シートX!C$4:C$1002,0),1))

 

(3)大きい表+判定条件→判定結果

問題

シートXのセルA3から始まる表X、シートYのセルA3から始まる表Y、シートZのセルA3から始まる表Zがある。表Xの各取引先の取引合計金額をもとに、表Yの判定条件で、表ZのC列「判定」を求める方法を説明しなさい。

f:id:waenavi:20191004002823j:plain

f:id:waenavi:20191004002853j:plain

f:id:waenavi:20191004003016j:plain

 

解説

Point 1. 検索値・検索範囲・集計範囲・判定条件・抽出範囲

大きい表から直接データを取ってくるのではなく、途中に「判定条件の表」をはさんで判定結果を求める問題もあります。

集計表に判定結果を求めるためには、まず、対象となるコード(検索値)を大きい表の中のコードが並んでいる列(検索範囲)から探します。通常は複数の検索値が見つかります。集計対象の列で集計(合計・最大・条件付個数など)をします。

f:id:waenavi:20191004003826j:plain

 

集計した結果を判定表の検索列の中から探します(判定条件)。求める答えが並んでいる列(抽出範囲)へ横向きに移動して、答えを返します。

f:id:waenavi:20191004004059j:plain

 

答えを求めるための検索値はセルA4です。

f:id:waenavi:20191004004718j:plain

 

コードが並んでいる検索範囲はシートX!C4:C1002、集計する範囲はシートX!D4:D1002(取引先別合計)です。

f:id:waenavi:20191004004358j:plain

 

判定条件が並んでいる列はシートY!A4:A7、答えが並んでいる抽出範囲はシートY!C4:C7(3列目)です。 

f:id:waenavi:20191004004650j:plain

 

Point 2. まずは集計することだけを考える

取引先別の合計なので「=条件付合計(A4,シートX!C$4:C$1002,シートX!D$4:D$1002)」です。

f:id:waenavi:20191004004916j:plain

 

Point 3. 数式の仕様に当てはめる

垂直照合(VLOOKUP)の場合、「=垂直照合(条件付合計, シートY!A$4:C$7, 3, 1)」となります。第4引数は完全一致ではないので1です。

f:id:waenavi:20191004005332j:plain

 

照合検索(LOOKUP)の場合、「=照合検索(条件付合計,シートY!A$4:A$7,シートY!C$4:C$7)」となります。

f:id:waenavi:20191004005434j:plain

 

表引き(INDEX)の場合、「=表引き(シートY!C$4:C$7,照合一致(条件付合計,シートY!A$4:A$7,1),1)」となります。照合一致の第3引数は完全一致ではないので1です。

f:id:waenavi:20191004005456j:plain

 

4.応用問題

(1)検索値が結合の場合

問題

シートXのセルA3から始まる表Xと、シートYのセルA3から始まる表Yがある。表XのセルE4に数式「=IF(C4=null,'',結合(C4,'-',条件付個数(C$4:C4,=C4)))」を入力して、セルE5以降に複写した。

表YのC列に最近の取引日を求め、D列にその時の取引金額を求める方法を説明しなさい。

f:id:waenavi:20191004005606j:plain

f:id:waenavi:20191004005701j:plain

 

解説

「条件付個数(C$4:C4,C4)」のように、検索範囲の始点を固定して個数を求めると取引回数の累計になります。1回目の取引は1、2回目の取引は2、・・・となります。下に行けば行くほど回数は多くなります。

取引先IDと取引回数をハイフンで連結しています。このように2つの検索値を1つにしたり、2つのデータを連結した列を用意した場合は、間違いなく「検索範囲」です

f:id:waenavi:20191004012414j:plain

 

最も古い取引は「取引先ID-1」、最も新しい取引は「取引先ID-総取引回数」です。総取引回数は「条件付個数(シートX!C$4:C$1002,=A4)」で求められますから、検索値は「結合(A4,'-',条件付個数(シートX!C$4:C$1002,=A4))」となります。

f:id:waenavi:20191004013017j:plain

 

したがって、検索列はシートX!E$4:E$1002、抽出列はシートX!B$4:B$1002なので、求める日付は「=表引き(シートX!B$4:B$1002,照合一致(結合(A4,'-',条件付個数(シートX!C$4:C$1002,=A4)),シートX!E$4:E$1002,0),1)」となります。

f:id:waenavi:20191004013206j:plain

 

金額は「=表引き(シートX!D$4:D$1002,照合一致(結合(A4,'-',条件付個数(シートX!C$4:C$1002,=A4)),シートX!E$4:E$1002,0),1)」となります。

 

(2)2次元の表引き

問題

シートXのセルA3から始まる表X、シートYのセルA3から始まる表Y、シートZのセルA3から始まる表Zがある。表ZのC列「判定」を求める方法を説明しなさい。なお、判定条件の合計と取引回数とは、取引先別の金額合計と回数である。

f:id:waenavi:20191004011606j:plain

f:id:waenavi:20191004011828j:plain

f:id:waenavi:20191004011856j:plain

 

解説

まずは判定条件が合計と回数なので、集計することだけを考えます。取引先別の合計は「=条件付合計(シートX!C$4:C$1002,=A4,シートX!D$4:D$1002)」、取引回数は「=条件付個数(シートX!C$4:C$1002,=A4)」です。

f:id:waenavi:20191004013753j:plain

 

判定条件が縦横にある場合は表引き(INDEX)です。「=表引き(シートY!C$5:E$8,照合一致(条件付合計,シートY!A$5:A$8,1),照合一致(条件付個数,シートY!C$3:E$3,1))」となります。

f:id:waenavi:20191004011802j:plain

 

5.さいごに

ここで説明しているのは、基本情報技術者試験の試験対策として、試験問題で使われている関数の意味を解説したものです。Excelの関数の使い方を説明したものではありません。

 


解説は以上です。


 


Copyright(C)2018-2019 waenavi, All rights reserved. [www.waenavi.com 定礎 平成三十年八月]