VLOOKUPの近似一致(近似値)・あいまい検索って何に使うの? VLOOKUPの近似一致(近似値)・あいまい検索って何に使うの? 意外と使える!?VLOOKUPの近似一致・あいまい検索について、その仕様と活用方法をまとめました。 VLOOKUPを使っている方なら一度は疑問になる近似一致、あいまい検索ですが 大抵の人はVLOOKUPを学ぶときに「最後の引数の指定はFALSE または0)」と習っていることでしょう。 それはそのはず、この指定であればどんな条件下であろうと「検索値と完全に一致」したものを結果として出してくれるのです。 また、近似一致・あいまい検索という言葉の雰囲気から、文字列を含むで検索が出来るのでは?とか思いがちですが、それも間違いです。 文字列含むで検索したいときは、別の方法がありますのでコチラご覧ください。 近似一致(あいまい検索)を行うときの前提条件 実はVLOOKUPの近似一致(近似値)・あいまい検索の仕様で検索範囲については 必ず「昇順」にしてあることが前提条件となります! 早くもめんどくさい条件が出てきたのでもう使う気が失せたかもしれませんが、 有効な使い道があるかもしれません。 最後まで必読を! もう一つのデメリット… これは私が実際に使いこなそうと必死になっていたときに気が付いた最大のデメリットですが 検索範囲が日本語文字列の場合、意図した動作をしない可能性があります。。。 おそらくですが、日本語文字列の場合昇順をしても昇順になりきらないのではと考えています。 確実に使えないというわけではないのですが、そういったちょっとした問題も発生します。 ただ、今回私が使用する方法はその問題も回避する方法ですので安心してください。 これは超メリット!計算がめっちゃ高速早い! VLOOKUPを普段使っている方の不満は「データが大量になるとめっちゃ遅くなる」 誰もがつまづく超デメリットだと思いますが、これが解決出来ちゃいます。 実はこの方法、ネットでも話題の「高速VLOOKUP」と言われている方法になります。 昇順にしているというのがEXCELの計算で高速処理を生み出しているのだと思われます。 これを下に伸ばします。 すると… あれ、E3とE4に同じ結果が… 実はこれが近似一致(あいまい検索)の仕様になります。 条件に合致したものがない場合、その一つ前の値を結果に出します。 今回はわざと"a00003"を除いていたため、一つ上の"a00002"が条件に引っかかったのです。 一つ前の値を結果に出すって、使い道あるの?と思った人が多いと思いますが 実は私も全然使い道が分りませんw 高速処理ができても、完全に一致したものを返さないのなら使えないじゃん って思いますが、これを解決する方法を紹介します。 これでも高速なんです。 IF文で先に同じ検索値を取得出来ているか確認し、同じ検索値を取得してる場合だけに結果を返すようにしています。 また、これであれば先ほどデメリットとして挙げた「日本語文字列だと上手く動作しない」の回避策にもなっています。 ちなみにこのVLOOKUP、どのくらい高速かというと… 20万行から2万行分取得する際に通常のVLOOKUPは30秒かかるところが一瞬! くらい早いです。 VLOOKUPの近似一致(近似値)・あいまい検索について その使用方法をご紹介させていただきました。 関連コンテンツ 文字列抽出・変更・置換系トピック 検索系トピック 集計・ピボット系トピック マクロで自動化!簡易ツールの作成やVBAの活用例を紹介 その他EXCELテクニック コラム 当サイトでは皆さまがEXCEL作業で行き詰った問題を解決するべく王道のテクニックからちょっと特殊なテクニックまで 様々な中〜上級技・プチテクニックを公開し、少しでも皆様の業務効率改善に役立てていただければと思い、ネタをまとめています。 EXCELの作業で悩み・お困りごとはありませんか? 集計に時間がかかり過ぎ。 効率化をしたい。 などなど日頃から奮闘しているあなたに少しでも参考になる情報を与えることが出来れば幸いです。 質問・相談なども受け付けておりますが、最近忙しくて返事が遅れてしまいます。。。 サイト内の内容についてのご質問は優先的に受け付けておりますが、それ以外のご相談などはお断りすることもありますのでご了承ください。
次の値を検索して対応する値を抜き出すことができるVLOOKUP関数の使い方について説明します。 引数が多く、使い方が複雑ですが広い用途で使える関数なので、きっちり使い方を学んでいきましょう。 VLOOKUP関数でできること 上の図の表を例にあげると、名前 A列 を検索することでクラス B列 や点数 C列 の値を抜き出すことができる関数です。 VLOOKUP関数の使い方 VLOOKUP関数を使って山田の名前を検索して、山田のクラスであるAを抜き出してみましょう。 範囲を指定します。 表全体であるA2セルからC11セルをドラッグして「, コンマ 」を入れます。 クラスの列番号である「2」を入れて「, コンマ 」を入れます。 「FALSE」を入力してEnterキーを押します。 このようにすると、上の図のような数式となります。 それぞれ説明していきます。 セル値 A1など のほか、直接文字列や数字を入力することも可能です。 このときの注意点は、検索値がある列が範囲の一番左側にあるということです。 VLOOKUP関数は指定範囲の一番左側の列を検索するため、クラスの検索値から点数を引き出したいときはB2セルからC11セルといった範囲指定が必要です。 あくまで「検索値がある列から」なので検索値をクラス B列 とし、範囲を「B2:C11」とした場合、点数 C列 を抜き出したい場合の列番号は「2」となります。 TRUEは近似値検索で、数値検索のときなどに使用します。 近似値検索を利用する場合は、データを昇順に並べ替える必要があります。 検索型を入力しない場合は、TRUEで処理されます。 まとめ ・検索値がある行の指定した値を抜き出すことができる関数がVLOOKUP関数 ・検索範囲は検索値のある列を一番左側に設定する ・列番号の引数は、検索値がある列を1とした列番号.
次の
VLOOKUP関数、使いこなしていますか? 日ごろの業務で使い慣れてくると、最初は複雑だと思っていた引数の指定もお手のもの。 いろいろなシーンで使いたくなりますよね。 本連載ではVLOOKUP関数の基本と 構造化参照について解説してきましたが(リンクは記事末尾にあります)、今回はさらに踏み込んだワザを紹介しましょう。 ポイントは「 2つの条件」を使うことです。 【 エクセル時短】第51回では、VLOOKUP関数の上級ワザとして、2つの条件を指定して値を検索する方法を解説します! VLOOKUP関数+構造化参照をあらためて理解する まず、VLOOKUP関数の構文をおさらいします。 VLOOKUP( 検索値, 範囲, 列番号, 検索の型) そして今回、参照する表はこちら。 テーブルに変換し、「価格表」という名前を付けています。 サービスの提供実績を4つの会員種別ごとにまとめた表です。 この表を参照し、最終的に「サービスNo」と「会員種別」という2つの条件に一致する実績を求めます。 まずは練習として、「サービスNo」に対応する「サービス名」を取り出すVLOOKUP関数を入力してみます。 1VLOOKUP関数の数式を入力する こちらは取り出した値をまとめる表です。 VLOOKUP関数の引数のうち、[ 検索値]はセルC2の「サービスNo」、[ 範囲]は「価格表」テーブル、[ 列番号]はCOLUMN関数を使い、「価格表」にある「サービス名」の列番号を取得するようにしました。 参照する表にデータの増減があっても数式を修正しなくて済むように、構造化参照しているわけですね。 数式を書き出すと以下のようになります。 構造化参照とINDIRECT関数を組み合わせる さて、ここからが本番です。 今度は「サービスNo」を[ 検索値]にしつつ、「会員種別」をもう1つの条件として指定できるVLOOKUP関数の数式を作ります。 しかし、[ 検索値]は1つしか指定できません。 そんなときは[ 列番号]で指定する構造化参照に 「INDIRECT」(インダイレクト)関数を組み合わせます。 12つの条件を指定したVLOOKUP関数の数式を入力する [ 検索値]はセルC2の「サービスNo」、[ 範囲]は「価格表」テーブルと、ここまでは先ほどと同じ。 [ 列番号]のCOLUMN関数に INDIRECT関数を組み合わせているところに注目してください。 数式は以下の通りです。 引数[ 列番号]のCOLUMN関数にネストしたINDIRECT関数は、指定したセルの値で別のセルを参照する関数です。 構文は以下のようになります。 INDIRECT( 参照文字列, 参照形式) 2つ目の引数[ 参照形式]はTRUEまたはFALSEで指定しますが、省略するとExcelで標準の形式(A1形式)が指定されます。 通常は省略してかまいません。 つまり、この数式はセルB2の値によって「価格表[会員]」や「価格表[非会員(特別)]」などとなります。 それがCOLUMN関数の引数となり、VLOOKUP関数の[ 列番号]を切り替えることができる、というわけです。 試しに会員種別を「非会員(特別)」に切り替えると、実績の値が自動的に変化しました。 なお、「会員種別」列は入力規則でドロップダウンリストを設定しておくと便利です。 いかがでしたか? VLOOKUP関数で複数の条件を使えるようにするには、参照先となる表を分ける方法もあります。 ただ、似たような表をいくつも作るよりは、今回のように1つの表で完結したほうがスッキリするでしょう。 構造化参照と合わせて活用してくださいね。 close 閉じる.
次の