リトルウィング

アクセスカウンタ

zoom RSS エクセルで使われるTRUEとFALSEの使い方に迷う/TRUEの使い方

<<   作成日時 : 2014/04/14 22:24   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

エクセルを使っている人にはおなじみの関数に「VLOOKUP」と「HLOOKUP」があります。

ある範囲から指定した条件に合致するデータを取り出してくれるという「関数」です。
VLOOKUPの場合はこうです(HLOOKUPも列番号が行番号になるだけで他は同じです)。

=VLOOKUP(検索するデータ、検索する範囲、列番号、検索の型)

この中で検索の型を指定する言葉がおかしいので勘違いをする人が多いようです。

FALSE・・・・完全一致

TRUE・・・・・不完全一致(検索値以下の近似値)

英語を考えると、なんでこんな逆の表現になってしまったのか不思議です。

ちなみに検索の型を省略することも出来、その場合はTRUEと解釈されることからVLOOKUPの初期値はTRUEで、完全一致検索ではなく近似値検索が本来の目的と考えると、近似値=TRUEということなのでしょう。

それにしても紛らわしい不思議な用語です。


実際にはVLOOKUPを使用している人のほとんどが完全一致検索ではないかと思います。

どんな時に「TRUE」を使うのか、簡単な例を作ってみました。
4月から変更になった定形外郵便物の料金表から金額を調べる表です。

画像


E4に封筒の重量を入力すると、料金欄にその重量の料金が表示されるというものです。
このように完全一致でなく、ある一定の範囲に対して同じ数値を返すような場合に使用すると良いのではないでしょうか。

料金欄には「=VLOOKUP(E4,A4:C12,3,TRUE)」という式を入力します。 TRUEは省略しても構いません。
A列は通常非表示にした方が見栄えが良いのですが、分かりやすくするために表示しています。

入力した重量をA列で検索して、その結果該当する行のC列の金額を料金欄に表示します。

A列の数値とB列の重量の数値が1行ずれているのでは? と思われますが、TRUEの場合は検索値以下の近似値ということに注目して下さい。

この表でもし150g以内のA列を151、250g以内のA列を251とすると、入力した200は合致する数値が無いため近似値の250gの1行前の150gの料金、205円を表示してしまうのです。

TRUEを使うときに気をつけなければいけないのは検索列(検索する範囲の一番左の列)が昇順に並んでいないといけないと正しい結果にならないことがあります。

昔は、検索列の一番上の行から順次検索をして行き、検索する数値を越えた数値があると検索を終了して、一つ前の行を検索結果としていた記憶があるのです(VLOOKUPではないかも知れません)が・・・・実際に確かめてみると、もっと複雑な検索を行っているようで、大きな数値があっても飛び越えて検索をしているようです。 いづれにしても昇順に並んでいないと検索結果に間違いが生ずることには変わりがないですが。


TRUEで検索する場合、ひらがなやカタカナは昇順に並べておけば正しい検索が出来ますが、漢字は昇順に並び替えても正しい検索結果にならないので注意が必要です。

その原因は、ここで言う昇順とはコード(漢字コード)順の並び替えのことです。
エクセルの並び替えで昇順とはコード順ではなく漢字の読み順(のはず)なので、結果がおかしくなってしまうのです。

どうしてもTRUEで漢字検索をする(こんなことをする人はいないでしょうが)には、CODE関数でコードを取り出して並び替えて検索すればいいのです。 ただしCODE関数は漢字一文字しか取り出せないのでいつ用的ではなく、実際にはLEFT関数で2番目や3番目の値もCODE関数でコードを取り出して、それらを1つにつなげて並び替えないといけない。 というくらいしか考えつきません。 


だいたい、漢字検索をTRUEで検索する意味が考えられないので、実際には完全一致のFALSEになると思います。 その場合は検索列を昇順に並び変える必要はなく、上のような面倒なことを考えずに済みます。

 
VLOOKUPでTRUEを使用することはほとんどないと思いますが、こういう'使い方もあるということと、使用上の注意でした。


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

おまけ

VLOOKUPでFALSEを指定するとき、文字を間違えてエラーになって慌てることがあります。
そのためボクはFALSEを使わない入力をしています。

=VLOOKUP(E4,A4:C12,3,FALSE) の場合

その1 =VLOOKUP(E4,A4:C12,3,0) ・・・・FALSEの代わりにゼロを入力する

その2 =VLOOKUP(E4,A4:C12,3,) ・・・・・FALSEの所に何も入力しないでその前のカンマだけを入力する この方法だと文字の間違いでエラーになることもありません。
この方法の欠点は、カンマを入れないとTRUEになってしまうのと、式を確認するときにTRUEと見間違い易いことなので、それが気になる人はゼロを入れる「その1」が良いと思います。






テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
エクセルで使われるTRUEとFALSEの使い方に迷う/TRUEの使い方 リトルウィング/BIGLOBEウェブリブログ
文字サイズ:       閉じる