2008年11月アーカイブ

[書式] COUNTIF(<対象範囲>,<条件>)

 

[機能] <対象範囲> のセルのうち、<条件> に一致するセルの個数をカウントします。

 

<対象範囲>  カウントしたいセル範囲を指定します。
<条件>  条件を、数値、文字列、式のいずれかで指定します。
[引数]

 


 

●●● 統計関数ではありますが ●●●

 

COUNTIF関数は、「統計関数」というカテゴリに分類されています。

でもだからと言って

  「COUNTIF関数 = 集計と統計のための関数」

とは限りません。もっと幅広く、別の用途にも活用できます。

 

たとえば、特に便利なのが重複データのチェック

名簿の重複、商品登録の重複など、ワークシート上で長くデータを運用していると、さまざまな

ダブリを生じてしまうことがあります。そんなダブリを調べたり、排除するような用途にも

COUNTIF関数は活用できます。 

 

 

 

 ●●● 重複があるかどうかを調べる ●●●

 

それでは、まず重複があるかどうかを調べる方法です。

 

この例題は、氏名と郵便番号だけからなるシンプルな名簿です。この表から、氏名が重複して

いる行を見つけてみましょう。

 

counif関数3_1.jpg 

(1) カウント用に C列を準備する。

(2) セルC2 に、次の計算式を入力する。

   =COUNTIF($A$2:$A$16,A2)

(3) セルC2 の計算式を セルC3~C16 の範囲にコピーする。

 

セルC2 に入力した計算式は、

  「セルA2~A16 の範囲に、セルA2 の氏名が何個あるか」

を求めるものです。

そして、<対象範囲> の部分は絶対参照にしています。こうすれば、下方向にコピーするだけ

で、それぞれの氏名の個数が正しく計算されます。

 

この計算結果で、値が 2 以上のものは氏名が重複しているということが判りますね。

 

 

さらに、下図のようにオートフィルタを利用して絞り込めば、重複のあるデータだけを参照する

ことができます。

 

counif関数2_2.jpg

(1) [データ]メニューから [フィルタ]-[オートフィルタ] を実行。

(2) C列の [▼] をクリックし、オプションを選択。

(3) 「1」 と 「等しくない」 という条件を指定し、[OK] をクリック。  

 

この例題はたったの15件のデータでしたが、数百件、数千件の時には、とても便利な方法です。

また重複データが多い場合、並べ替えなどの機能も併用すると、作業がやりやすくなります。 

 

 

 

●●● 重複を取り除く ●●●

 

上の例題は、重複しているデータを全件とも表示するためのものでした。

次に、重複行を取り除いてしまう方法について見ていきましょう。

 

counif関数3_3.jpg 

(1) [データ]メニューから [フィルタ]-[オートフィルタ] を選択してオートフィルタを解除。

(2) セルC2 の計算式を、次のように変更する。

   =COUNTIF($A$2:A2,A2)

(3) セルC2 の計算式を セルC3~C16 の範囲にコピーする。

 

この新しい計算式のポイントは <対象範囲> です。

セルA2~A2 を指定していますが、片方が絶対参照、もう一方が相対参照になっています。

絶対参照の方はコピーによって変化しませんが、相対参照の方は下方向へコピーすることで

  A3 , A4 , A5 ・・・

と、変化していきます。

その結果、それぞれの計算式は、

  セルC2  =COUNTIF($A$2:A2,A2)

  セルC3  =COUNTIF($A$2:A3,A3)

  セルC4  =COUNTIF($A$2:A4,A4)

       ・
       ・
       ・

となります。

つまり、この計算式の意味は、

  「自分自身の行から上の範囲に、同じ氏名が何個あるか」

というものなのです。

 

重複がある場合には、1番目のデータは 1 、最初の重複データは 2 、その次の重複は 3  という

計算結果になります。

 

 

今度はオートフィルタで、1 だけを表示するように絞り込めば、2番目以降が排除されて、重複の

ないリストを見ることができます。

 

counif関数3_4.jpg 

(1) [データ]メニューから [フィルタ]-[オートフィルタ] を実行。

(2) C列の [▼] をクリックし、「1」を選択。

 

 

さて、しかしこのシートは、実際に重複行がなくなったわけではありません。見えなくなっている

だけで、シート上には存在しています。

本当に重複を排除した表を作成するには、もうひと手間が必要です。オートフィルタによって絞り

込まれた状態の表をコピーして、新しいシートに貼り付ける必要があります。

 

counif関数3_5.jpg

(1) セルA1~C16 を選択。

(2) [編集]メニューから[コピー]を実行。

(3) 新規ブックを開く。

(4) [編集]メニューから[貼り付け]を実行。

 

これで、重複のない新しい表ができあがりました。

 

 

[書式] COUNTIF(<対象範囲>,<条件>)

 

[機能] <対象範囲> のセルのうち、<条件> に一致するセルの個数をカウントします。

 

<対象範囲>  カウントしたいセル範囲を指定します。
<条件>  条件を、数値、文字列、式のいずれかで指定します。
[引数]

 


 

●●● 実践は、シンプルじゃない ●●●

 

「実践」というのは、書籍やマニュアルに書かれた知識をふまえつつも、そこから

  「少し、はみ出していく」

過程だと、私は思っています。

 

このはみ出していく過程というのは、同時に

  「複雑化」

の過程でもあります。

 

現実の業務にいざ活用しようとすると、前回の例題のようなシンプルなやり方「だけ」では、十分

に満足のいく結果が得られなかったりするのです。

 

たとえば、次のようなデータを各問ごとに集計することをイメージしてみましょう。

counif関数2_1.jpg 

 

こんな単純な表でも、配慮しなければならない点がいくつも思い浮かんできます。

 

  (1) データを変更したら、集計結果がリアルタイムに変わってほしい

  (2) ブランクをどのような方法で未回答として集計するか

  (3) データの行が追加された時、楽にメンテナンスしたい

  (4) 集計項目の列が追加された時、楽にメンテナンスしたい

  (5) できるだけシンプルにやりたい

  (6) 素早く完成させたい 

 

などなど・・・。

 

こうしたニーズのどこに力点を置くかで、やり方が変わってきます。たとえば、(6)を重視するな

ら、ピボットテーブルが簡単かもしれません。でもそうすると、(1)が実現できません。 

ワークシート作りというのは、そんな相反するニーズのバランスを取りつつ、

 

  ・安全性

  ・拡張性

  ・効率性

 

の落としどころを探る作業と言ってもいいかもしれません。

 

 

ということで、ためしに今回は、私流のやり方で上図のシートを集計してみたいと思います。

 

やり方の中で、「何でわざわざそんな面倒なことを・・・」と感じることもあるかもしれません。でも

いずれも、(1)~(6)のニーズのいずれかに配慮した、「わたくしなりの落としどころ」です。

 

なお、ほかにもいろいろな良い方法があるかと思いますので、あくまで一例として参考にしていた

だくのがよいかと思います。

 

 

 

●●● 入力データを、ワンクッション加工する ●●●

 

私は、入力されたデータをそのまま集計することはしません。たいていの場合、間にシートを1枚

かめて、そこでデータを加工してから集計するようにしています。

たとえば、次のようなやり方です。

 

counif関数2_2.jpg

  (1) 集計したいデータが入力されているブックに、新規シートを作成する。

  (2) 新しく作成したシートのシート名を 「集計元データ」 にする。

  (3) 「集計元データ」シート の セルA1 に、次の計算式を入力する。

     =IF(ISBLANK(入力データ!A1),"未",入力データ!A1)

  (4) セルA1 の計算式を セルA1~K21 の範囲にコピーする。

 

このような空白セルへの対処以外にも、

  ・数値/文字列の変換

  ・文字列の置換

  ・前後に文字列を加える

など、集計対象のデータ状況に応じた加工を、あらかじめここでおこなっておくと便利です。

 

 

 

●●● 集計元の各列に名前をつける ●●●

 

次に、問1~問6の各列に、名前(範囲名)をつけておきます。

 

counif関数2_3.jpg

  (1) B~K列 を選択する。

  (2) メニューから [挿入]-[名前]-[作成] を実行する。

  (3) [上端行]のみオンにして、[OK]をクリック。

 

 

●●● あっけない集計 ●●●

 

ここまで準備ができたら、いよいよ集計にかかります。

 

counif関数2_4.jpg 

  (1) 新規シートを作成する。

  (2) 新しく作成したシートのシート名を 「集計」 にする。

  (3) セルB1~B5 に 「問1」~「問5」 の文字列を入力。

  (4) セルA2~A7 に 1~5 の数値と、「未」というの文字列を入力。

  (5) 「集計」シート の セルB2  に、次の計算式を入力する。

     =COUNTIF(INDIRECT(B$1),$A2)

  (6) セルB2 の計算式を セルB2~F7 の範囲にコピーする。

 

これまでの準備のおかげで、ひとつの計算式だけで、問1~問5のすべての集計ができます。

 

この例題は、やり方と手順の紹介にとどめます。INDIRECT関数 や計算式の解説を始めると、

どんどん横道に逸れそうですので。

 

 

ということで今回は、わたくしの個人的な集計テクニックの一部を紹介いたしました。

 

 

[書式] COUNTIF(<対象範囲>,<条件>)

 

[機能] <対象範囲> のセルのうち、<条件> に一致するセルの個数をカウントします。

 

<対象範囲>  カウントしたいセル範囲を指定します。
<条件>  条件を、数値、文字列、式のいずれかで指定します。
[引数]

 


 

●●● Excelで最強の関数?! ●●●

 

弊社がおこなっている業務のひとつに、

  「アンケートの入力・集計

があります。

おもに Excel で入力環境を作り、オペレーターの方たちに入力をしてもらいます。

そして、入力されたデータを集計し、結果をお客様に納品するという仕事です。

 

この業務の「始め」の部分と、「終わり」の部分で、このCOUNTIF関数は活躍します。

 

「始め」の部分とは、入力環境づくりです。弊社では、シート上で

  ・あり得ない値が入力されたら警告する

  ・応募の重複があったら警告する

  ・状況に応じて、リストから選択入力できるようにする

などの仕掛けを必ず作ってから、そこにデータを入力していきます。

こうすることで、整然とした、信頼性の高いデータを得ることができます。

この中の、「重複があったら警告する」のに、COUNTIF関数は欠かせないのです。

 

「終わり」の部分とは、言うまでもなく集計作業です。

もちろんここでは、作業の主役となります。

 

「Excelで最強の関数は何か」と言われれば、私は迷わずこのCOUNTIF関数をあげます。 

一般には意外に活用されてないようですが、こと集計に関して言えば、最重要関数だと思います。

 

 

 

 ●●● 最大のポイントは、<条件> の書き方 ●●●

 

 この関数を使いこなせるかどうかは、

 

   「<条件> の書き方のルールを、きちんと知っているか」

 

   「他の関数や機能と連携した応用が、どれだけできるか」

 

の2点にかかっていると言ってもいいでしょう。

 

今回はまず、<条件> の書き方の基本ルールから、ていねいに確認していきましょう。

 

 

【カウントしたい対象が数値の場合】

countif関数_1.jpg 

この例題で集計したい対象は、セルE2~E6です。(例題をわかりやすくするため、あえてデータを少なくしています)

カウントするための計算式が入力されているセルは、C列です。

 

さっそく、計算式の中の <条件> の書き方について見ていきましょう。

 

基本的には、2番目の引数 <条件> の部分は

   "=3"      (等しい)

   ">="      (~以上)

   ">"        (~より大きい)

   "<=3"    (~以下)

   "<3"      (~より小さい)

のように表記します。

また、「等しい」の時には、

  "3"

や、数値を裸のまま記述する

  3

といった記述でも大丈夫です。

 

数値のカウントについては、基本はこれだけです。逆に、「○○以上、かつ○○以下」といった、複合条件による

カウントは、この関数ではできません。

 

 

【カウントしたい対象が文字列の場合】

countif関数_2.jpg

文字列データのカウントでは、ワイルドカードを利用できるというところが重要です。

ワイルドカードとは、任意の文字をあらわす特殊な記号です。

  *  (任意の文字をあらわす)

  ?  (任意の1文字をあらわす)

 

文字列系のカウントでは、これらを状況に応じて適切に活用できるかどうかがポイントとなります。 

 

 

 

 ●●● 少しだけ、実践的な展開 ●●●

 

それでは、もう少し実践的な例題で、理解を深めてみましょう。

ここからは、<条件> を計算式に直接記述するのではなく、セルを参照するスタイルをとります。

 

まずは数値の例題から。

countif関数_3.jpg

 

このケースはアンケートの、数値による単数回答の設問を集計するイメージです。

セルD2~D21が集計対象の範囲、A列がカウントしたい数値、B列がその集計結果です。

 

ここではセルB2に

  =COUNTIF($D$2:$D$21,A2)

という計算式を入力しています。この計算式では、

<対象範囲> は、下方向にコピーすることを考慮して、絶対参照で入力しています。

<条件>は、単純に左側のセルを参照しています。

 

A列に1~5までの数値を入力するとともに、この計算式を下方向にコピーするだけで、それぞれの値の

件数を計算することができるというわけです。

 

 

では次に、文字列の例題です。 

countif関数_4.jpg

 

これは、アルファベットによる複数回答を、カンマ区切りで入力した場合の集計方法です。

 

計算式は、先ほどとまったく同じです。

ただし <条件> を入力たA列の部分が重要なポイント。ワイルドカードを使っていますね。

前後に * (アスタリスク)を付加することで、「含む」という条件でカウントしています。

こうすることで、複数回答の集計にも対応できるわけです。

 

ということで、COUNTIF関数の1回目、いかがでしたでしょうか。

ごく基本的な事項が中心でしたが、これらのことを理解しているだけでも、活用範囲がぐっと広がると思います。

 

 

[書式] VLOOKUP(<検索したい値>,<対象範囲>,<列番号>,[検索方法])

 

[機能] 1.[検索方法]に TRUE を指定(もしくは省略)した場合

        <検索したい値> 以下の最大値を <対象範囲> の1列目からさがし、

                                           その行の <列番号> 目のセルの値を返します。

        <対象範囲> は、必ず1列目が昇順で並べ替えられていなければなりません。

 

      2.[検索方法]に FALSE を指定した場合

        <検索したい値> を <対象範囲> の1列目からさがし、その行の <列番号> 目のセルの値を返します。

        <対象範囲>の並び順は任意です。

 

[引数] <検索したい値> 検索したい値やセルを指定します。
<対象範囲> 検索対象となる範囲を指定します。この範囲の1列目が検索対象となります。
<列番号> <検索範囲> の何列目を返したいかを指定します。「1」を指定すると、検索された値そのものが返ります。
[検索方法] TRUE 、FALSE のいずれかを指定します。省略は TRUE とみなされます。

                                                            

 

●●● 表を変えるとエラーが消える! ●●●

 

前回は、IF関数とISBLANK関数を利用して、ブランク時のエラー処理をしました。

 

ところが、もっと安直な別の方法もあります。

計算式ではなく、学生名簿の表の方をひと工夫するやり方です。 

まれにケガをするかも知れないチカラワザですが、、、

 

VLOOKUP関数FALSE_3.jpg

 

このワークシート、VLOOKUP関数だけで処理しているのに、エラーが消えてますね。

 

このシートでは、名簿の最後に、「0」という学生番号の行を付け加えています。同時に、

計算式の<対象範囲>も1行増えて、「$E$4:$H$24」となっています。

 

また、画面では見えませんが

  F24、G24、H24

のセルに「'」(シングルコーテーション)が入力してあります。

(これを入れないと、#N/Aエラーが表示されていたところに「0」が表示されてしまいます)

 

これで、学生番号が入力されていないところのエラーを消すことができるのです。

 

さて、タネあかしです。エラーが消えた理屈、わかりますか?

 

VLOOKUP関数は、1番目の引数である<検索した値>を、数値変数として扱っています。(推測です)

また、Excelでは、空のセルを数値として扱う場合、内部で「0」に変換されます。

このため、VLOOKUP関数で空のセルを検索すると、<対象範囲>から「0」を探しにいくようなのです。

これを逆手にとって、<対象範囲>に「0」の項目を作っておけば、その行が検索されてエラーが避け

られるという仕組みです。

 

次に、F24、G24、H24 に「'」(シングルコーテーション)を入力した理由です。

セルの先頭の「'」は、

  「これに続く値は文字列ですよ」

ということを明示的に表す特別な記号なのです。

たとえばセルに

  '7

と入力すると、それは数値ではなく、文字列であるとみなされるのです。

 

つまり、F24、G24、H24 に

  '

と入力したのは、これらのセルは「特にデータはないけど文字列だよ」ということを表しています。

これによって、VLOOKUPの計算結果に「0」が表示されるのを避けているのです。

 

ちょっと、深掘りしすぎたでしょうか。。。 

でも、シングルコーテーションを使った文字列入力まで一緒に覚えられる、お得感のある解説だと・・・

 

勝手に思っているのですが ^_^;) 

 

 

 

●●● 表の行数が変化する時には ●●●

 

さて、少し細かくなりすぎたので、話題をサクっと変えます。

 

今回、「学生名簿」の表に1行付け加えたわけですが、このように行を加えるたびに計算式を直して

いたのでは大変ですね。

 

そんな時、つまり <対象範囲> の表に逐次データが追加されていくような場合には、

<対象範囲> に列全体を指定してしまうというチカラワザがあります。

 

つまり、

B4の計算式を

  =VLOOKUP(A4,E:H,3,FALSE)

C4の計算式を

  =VLOOKUP(A4,E:H,4,FALSE)

としてしまうわけです。

 

ただし、実際には関係のない行まで検索対象になってしまうので、その点は注意が必要です。

たとえばこんな感じ。

VLOOKUP関数FALSE_4.jpg

 

セルA11に「<学生名簿>」と入力すると、1行目が検索され、セルG1、H1 が計算結果となってしまいます。

(セルG1、H1 が空なので、ゼロに変換されて「0」と表示されています)

 

 

今回はVLOOKUP関数の、一般にはあまり触れられていない点にまで言及してみました。

ほんとうは、文字列と数値の違いによって生じる問題などもあるのですが、VLOOKUP関数は、

ひとまず、ここまで!!

 

[書式] VLOOKUP(<検索したい値>,<対象範囲>,<列番号>,[検索方法])

 

[機能] 1.[検索方法]に TRUE を指定(もしくは省略)した場合

        <検索したい値> 以下の最大値を <対象範囲> の1列目からさがし、

                                           その行の <列番号> 目のセルの値を返します。

        <対象範囲> は、必ず1列目が昇順で並べ替えられていなければなりません。

 

      2.[検索方法]に FALSE を指定した場合

        <検索したい値> を <対象範囲> の1列目からさがし、その行の <列番号> 目のセルの値を返します。

        <対象範囲>の並び順は任意です。

 

[引数] <検索したい値> 検索したい値やセルを指定します。
<対象範囲> 検索対象となる範囲を指定します。この範囲の1列目が検索対象となります。
<列番号> <検索範囲> の何列目を返したいかを指定します。「1」を指定すると、検索された値そのものが返ります。
[検索方法] TRUE 、FALSE のいずれかを指定します。省略は TRUE とみなされます。

                                                            

 

●●● 商品コードの検索には FALSE が必須 ●●●

 

前回お話しした、4番目の引数が存在しなかった時代には、商品コードなどを扱う検索に

VLOOKUP関数を利用することができませんでした。

 

それは、次のような理由のためです。

 

たとえば、間違った商品コードを <検索したい値> として指定した場合、本来ならエラーを

返してもらいたいところです。

ところが、当時は範囲検索専門の関数でしたので、 

  「前後の近い行の値を返してしまう

わけです。

これでは商品コードなどの検索には不向きですね。 

 

ということで、4番目の引数が登場。ここに FALSE を指定すれば「完全一致」の検索ができる

ようになったのです。

 

 

●●● せっかくの #N/Aエラーですが、見た目がちょっと ●●●

 

それでは、VLOOKUP関数で FALSE を指定した方法の、代表的な例を見ていきましょう。 

たとえば次のようなケースです。

 

参加者名簿の「学生番号」(A列)を入力することで、学生名簿から検索して「氏名」や「性別」(G列やH列)

の値を自動的に表示したいようなケースです。

 

VLOOKUP関数FALSE_1.jpg 

まずこのシートは、<対象範囲> の部分が昇順に並べ替えられていないのが、TRUE のケース

と異なるところです。FALSE の場合、<対象範囲>の並び順は、任意でかまいません。

 

セルB4 には

  =VLOOKUP(A4,$E$4:$H$23,3,FALSE)

セルC4 には

  =VLOOKUP(A4,$E$4:$H$23,4,FALSE)

という計算式が入力されています。

 

そしてそれぞれ、13行目まで、下方向にコピーしてあります。

(蛇足ではありますが、「E4:H23」 は、コピーをしても参照範囲が変わらないように、絶対参照で

「$E$4:$H$23」となっています)

 

さて、このシートでは、誤った学生番号が入力された「08-9999」の部分(9行目)には、確かに

  #N/A

が表示されています。これはOK、意図した通りの結果が得られました。

 

でもそのかわり、学生番号が入力されていないところにまで #N/Aエラーが表示されています。

予備にもうけた行にまでエラー値が表示されてしまうのは、ちょっと格好が良くないです。

 

そこで、次に、このエラー値の消し方を考えてみましょう。 

 

 

 

●●● エラー値を出さないための基本 ●●●

 

今回は、もっとも基本的なテクニックでこのエラーを消したいと思います。

(計算式を変えないチカラワザもあるのですが、それは次回。。。)

 

エラー値を出さない基本は、

 

  「計算元の値が、その関数の動作に適切かどうかを調べて、IF関数で対処

 

することです。

 

このケースでは、次のようになります。 

VLOOKUP関数FALSE_2.jpg

 

セルB4の計算式を

  =IF(ISBLANK(A4),"",VLOOKUP(A4,$E$4:$H$23,3,FALSE))

セルC4の計算式を

  =IF(ISBLANK(A4),"",VLOOKUP(A4,$E$4:$H$23,4,FALSE))

というように変えたわけです。

 

この計算式は、

 

  「もし学生番号がブランクなら、「""」(空白文字列)を、そうでなければVLOOKUPの

計算結果を返しなさい」

 

という意味です。

 

これのようにすれば、学生番号に入力がない場所には、きちんと空白が表示されるようになります。

 

  

さて、今回はVLOOKUP関数の FALSE の用法と、エラー処理の基本について見てきました。

次回はあえて、基本からちょっとだけはみ出した、チカラワザを紹介する予定です。

 

[書式] VLOOKUP(<検索したい値>,<対象範囲>,<列番号>,[検索方法])

 

[機能] 1.[検索方法]に TRUE を指定(もしくは省略)した場合

        <検索したい値> 以下の最大値を <対象範囲> の1列目からさがし、

                                           その行の <列番号> 目のセルの値を返します。

        <対象範囲> は、必ず1列目が昇順で並べ替えられていなければなりません。

 

      2.[検索方法]に FALSE を指定した場合

        <検索したい値> を <対象範囲> の1列目からさがし、その行の <列番号> 目のセルの値を返します。

        <対象範囲>の並び順は任意です。

 

[引数] <検索したい値> 検索したい値やセルを指定します。
<対象範囲> 検索対象となる範囲を指定します。この範囲の1列目が検索対象となります。
<列番号> <検索範囲> の何列目を返したいかを指定します。「1」を指定すると、検索された値そのものが返ります。
[検索方法] TRUE 、FALSE のいずれかを指定します。省略は TRUE とみなされます。

                                                            

 

●●● 忘れられた過去 ●●●

 

VLOOKUP関数はその昔、4番目の引数が存在していませんでした。

ちょっと意外かもしれませんが、本当の話、

90年代前半、まだMS-DOSから

 C>win

なんてやってWindowsを起動いた、素敵な時代の話です。

 

当時のVLOOKUP関数は TRUE の用法のみ、つまり、範囲検索専門の関数でした。

ですから、

  「検索」

というよりむしろ、

  「値のレンジによって異なるデータを取り出す」

という、いかにも「表計算」らしい関数だったわけです。

 

そんな歴史から察するに、VLOOKUP関数は[検索方法]の TRUE と FALSE で、

きっちり区別して考えた方が理解しやすいかもしれません。

 

ということで、今回は、まずその本流ともいえる TRUE での用法について見て

いきましょう。

 

 

●●● IF関数の拡張版 ・・・・のような役割 ●●●

 

さて、こんなケースには、どのように対処しますか?

所得金額から対応する控除額を求めたい、そんなケースです。 

配偶者特別控除.jpg 

そう、条件によって値を変えるという面では、IF関数を利用する方法もありますね。

でも10種類以上の条件判断。

IF関数の入れ子は7個まで・・・

ちょっと、、、つらすぎます。

 

というわけで、VLOOKUP関数の出番となるわけです。

上記の要件をささっとExcelで実現すると、次のようになります。

セルB1の値を変えることで、それに応じた控除額がB3に計算されます。

  VLOOKUP関数_1.jpg 

ここでは、セルB3に

  =VLOOKUP(B1,D2:E12,2,TRUE)

と入力しています。この計算式は、

  「セルD2~E12の範囲の1列目から、セルB1が該当する範囲の行を見つけ、

                                  その2列目の値を返しなさい」

という意味になります。

 求めたい値が<対象範囲>の2列目にあるので、<列番号>は

  2

となります。

 

 

 

●●● ポイントは3つ ●●●

 

TRUE の用法のVLOOKUP関数のポイントは3つです。

 

1.<対象範囲>の1列目が必ず昇順に並んでいること

[検索方法]に TRUE を指定する用法では、<対象範囲>の1列目が、必ず昇順に並んでいなければ

なりません。この点が、FALSE の用法と大きく違うところなので、注意が必要です。

 

2.1列目の値を、「検索したい値以下の最大値」に相当するように正しく指定する

たとえば、

  「450,000円から499,999円」

というレンジに対して、1列目の値をどのように設定するかというのは、ちょっと悩むところかもしれません。

そんな時には、「検索したい値以下の最大値」ということを考えながら<対象範囲>の表を作成しましょう。

 

また完成後、計算元の値に境界値となる

  449999、450000、499999、500000

などを入力して、計算結果が正しく得られるか確認するのも、大切なことです。

(こんなテスト方法を、ちょっとむずかしい言葉で、「限界値分析」と言います) 

 

3.エラー値を避けるには、「0」のケースを指定しておく

「検索したい値以下の最大値」が<対象範囲>の1列目に存在しないと、エラー値

  #N/A

が計算結果として返ります。

これを避けるには、多くの場合、「0」のケースを指定することで解決します。(マイナス値を扱う場合は別です) 

 

さて、VLOOKUP関数の FALSE での用法は、また次回!!

カテゴリ