ExcelでVLOOKUPファジーマッチをする(3つの簡単な方法)

  • これを共有
Hugh West

本日は ブイルック を検索する。 ファジーマッチ をExcelで表示します。

大きなデータセットを扱っていると、しばしば似たような値をフィルタリングしようとすることがあります。 このようなマッチングタイプの1つは、次のように呼ばれます。 ファジーマッチ というように、値が完全に同じでなくても、その類似性に基づいてマッチングされる。

では、その使い方を説明します。 VBA VLOOKUP 機能 を検索するためにエクセルの ファジーマッチ .

ファジィマッチの紹介

A ファジーマッチ 部分一致

このタイプは、一方のテキストが他方のテキストと完全には一致しないが、テキストの重要な部分が他方のテキストと一致するものである。

与えられた例では、本 "世界大戦中のインドの歴史" には、3つの重要なセクションがあります。 沿革 , インド そして 世界大戦 .

したがって、これらのセクションのいずれか、または複数を含むすべての書籍は、ファジーに一致することになります。

ということで、ファジーマッチは

  • 第二次世界大戦の歴史
  • 古代ギリシャの歴史
  • 世界大戦の原因と影響
  • インダス文明-その古代史
  • インドは自由を勝ち取る
  • アドルフ・ヒトラー-世界大戦前と以後
  • インドの発見

練習用ワークブックをダウンロードする

VLOOKUPファジィマッチング.xlsm

ExcelでVLOOKUPファジーマッチを行うための3つのアプローチ

ここでは、データセットに 名称 という本屋さんの何冊かの本の

今日の目的は ブイルック を生成するために、Excelの関数を使用します。 ファジーマッチ ここでは、3つのアプローチについて説明します。

1.ワイルドカードを使ったVLOOKUPファジーマッチ(Lookup_Value全体マッチング)

  • まず最初に、ワイルドカード文字である アスタリスク (*) シンボルに一致させる必要があります。 ルックアップバリュー の別パーツではなく、このメソッドで。 ルックアップバリュー .

例えば、次のような文章を含む本を見つけることができます。 「第二次世界大戦 といった具合に。

全文が掲載されている書籍のみ 「第二次世界大戦 が一致します。

計算式は簡単です。 アスタリスク (*) の記号を両端につけています。 ルックアップバリュー テキストを表示します。

という式になります。

=VLOOKUP("*第二次世界大戦*",B5:B22,1,FALSE)

  • 元のテキストの代わりにセル参照を使うこともできます。 アンパサンド(&) 記号を使用すると、1つのテキストに統合されます。 このように。

=VLOOKUP("*"&D5&"*",B5:B22,1,FALSE)

についてもっと知りたい方は ブイルック ワイルドカードを使用する場合は、以下を参照してください。 本品 .

続きを読む Excelでワイルドカードを使ったVLOOKUPを行う方法(2通り)

2.VBAによるファジィマッチング

前節の方法は、部分的には目的を果たすが、完全には果たせない。

を用いた計算式を導き出すことになります。 VBAコード ということで、ほぼ目的を達成することができました。

  • まず最初に ブイビーエー ウィンドウを開き、以下を挿入します。 ブイビーエー のコードを新しいモジュールに追加します。

コード :

 Function FUZZYMATCH(str As String, rng As Range) str = LCase(str) Dim Remove_1(5) As Variant Remove_1(0) = "," Remove_1(1) = "." Remove_1(2) = ":" Remove_1(3) = "-" Remove_1(4) = ";" Remove_1(5) = "?" Dim Rem_Str_1 As String Rem_Str_1 = str Dim rem_count_1 As Variant For Each rem_count_1 In Remove_1 Rem_Str_1 = Replace(Rem_Str_1, rem_count_1, "") Next rem_count_1 Words = Split(Rem_Str_1) Dim i AsVariant For i = 0 To UBound(Words) If Len(Words(i)) = 1 Or Len(Words(i)) = 2 Then Words(i) = Replace(Words(i), Words(i), " bt ") End If Next i Dim Final_Remove(26) As Variant Final_Remove(0) = "the" Final_Remove(1) = "and" Final_Remove(2) = "but" Final_Remove(3) = "with" Final_Remove(4) = "into" Final_Remove(5) = "before" Final_Remove(6) = "after" Final_Remove(7) = "beyond" Final_Remove(8) = " "with" final_reove(1)(0)"=「~をする」 Final_Remove(4)=「~をする」 Final_Remove(7) =「~をする前に」 Final_Remove(6) =「~をする」 変数名"ここ" Final_Remove(9) = "そこ" Final_Remove(10) = "彼" Final_Remove(11) = "彼女" Final_Remove(12) = "彼" Final_Remove(13) = "can" Final_Remove(14) = "could" Final_Remove(15) = "may" Final_Remove(16) = "might" Final_Remove(17) = "shall" Final_Remove(18) = "should" Final_Remove(19) = "will" Final_Remove(20) = "would" Final_Remove(21) = "this" Final_Remove(22) = "that" Final_Remove(23) = "have".Final_Remove(24) = "has" Final_Remove(25) = "had" Final_Remove(26) = "during" Dim w As Variant Dim ww As Variant For w = 0 To UBound(Words) For Each ww In Final_Remove If Words(w) = ww Then Words(w) = Replace(Words(w), Words(w), " bt ") Exit For 'End If Next ww Next w Dim Lookup As Variant Dim x As Integer x = rng.Rows.count ReDim Lookup(x -1) Dim j As Variant j = 0 Dim k As Variant For Each kIn rng Lookup(j) = k j = j + 1 Next k Dim Lower As Variant ReDim Lower(UBound(Lookup)) Dim u As Variant For u = 0 To UBound(Lookup) Lower(u) = LCase(Lookup(u)) Next u Dim out As Variant ReDim out(UBound(Lookup), 0) Dim count As Integer co = 0 mark = 0 Dim m As Variant For m = 0 To UBound(Lower) Dim n As Variant For Each n In Words Dim o As Variant For o = 1 To Len(Lower(m)) If Mid(Lower(m), o.) For n = 0 to UBound(Lower(M)) If Mid(Lower(L)),Len(n)) = n Then out(co, 0) = Lookup(m) co = co + 1 mark = mark + 1 Exit For End If Next o If mark> 0 Then Exit For End If Next n mark = 0 Next m Dim output As Variant ReDim output(co - 1, 0) Dim z As Variant For z = 0 To co - 1 output(z, 0) = out(z, 0) Next z FUZZYMATCH = output End Function 

という関数を構築しています。 ファジィマッチ .

  • では、次のように保存してください。 本記事の方法3の手順 .

この ファジィマッチ 関数は、すべての ファジーマッチ ルックアップ値 を直接使用します。

があります。 シンタックス このうち ファジィマッチ 関数は

=FUZZYMATCH(lookup_value,lookup_range)である。

を調べるには ファジーマッチ ほんとうに "世界大戦中のインドの歴史" を入力します。 ルックアップバリュー を、セル内( D5 この例では)この数式を別のセルに入力してください。

=fuzzymatch(d5,b5:b22)です。

ほら、この本のファジー・マッチがすべて判明しました。 "世界大戦中のインドの歴史"

  • こちら D5 のセル参照です。 lookup_value ("The History of India during the World War").
  • B5:B22 ルックアップレンジ .

を調べてみよう。 ファジーマッチ という別の本の "大都市の犯罪の裏にある原因を探るノート" .

これを入力する ルックアップバリュー を、セル内( D5 この例では)この数式を別のセルに入力してください。

=fuzzymatch(d5,b5:b22)です。

💢 数式の説明

  • があります。 ファジィマッチ で作った関数は ブイビーエー という文字列を受け取ります。 ルックアップバリュー というセルの範囲と ルックアップレンジ の配列を返します。 ファジーマッチ を文字列の
  • したがって ファジマッチ(d5,b5:b22) の配列を返します。 ファジーマッチ セル内の文字列の D5 範囲内から B5:B22 .

続きを読む エクセルで部分テキストをVLOOKUPする方法(代替案あり)

類似の読み方

  • VLOOKUPが動作しない(8つの理由と解決策)。
  • INDEX MATCHとVLOOKUP関数の比較 (9例)
  • ExcelでVLOOKUPを複数条件で使用する(6つの方法+代替案)
  • Excel VLOOKUPで複数の値を縦に返す
  • ExcelでVLOOKUPしてすべてのマッチを返す(7つの方法)

3.Excelのファジー検索アドインを用いたファジーマッチング

Microsoft Excelでは アドイン ファジー・ルックアップと呼ばれるもので、これを使うと、2つのテーブルを照合して ファジー・ルックアップ .

  • まず、ダウンロードし、インストールします。 アドイン これにより リンク .
  • ダウンロードとインストールに成功すると、Fuzzy Lookup Add-inがExcel Toolbarに表示されるようになります。

  • 次に、データセットを一致させたい2つのテーブルに並べます。

  • という2つの書店の本のリストを含む2つのテーブルを用意しました。 ロバート書房 マーティン書店 .
  • 次に ファジー ルックアップ をクリックします。 ファジー・ルックアップ をExcelツールバーから選択します。

  • したがって、あなたは ファジー・ルックアップ テーブルをワークブックのサイドパネルに作成します。

での 左テーブル 右のテーブル オプションで、2つのテーブルの名前を選択します。

この例では、次のように選択します。 ロバート マーチン .

そして、その中で コラム セクションで、各テーブルのカラムの名前を選択します。

での マッチコラム セクションで、2つの列の間の一致の種類を選択します。 ファジーマッチ。 選ぶ デフォルト .

  • 最後に、以下をクリックします。 行く 新しいテーブルの中に、そのテーブルのマッチング比率が表示されます。

続きを読む VLOOKUPでExcelの2つのリストを比較する(2通り以上の方法)

結論

これらの方法を用いて ブイルック 機能 を検索するためにエクセルの ファジーマッチ。 これらの方法は100%効率的ではありませんが、それでも非常に便利です。 何か質問はありますか? コメント欄でお気軽にお尋ねください。 もっと良い方法があれば、シェアすることもお忘れなく。 これからも エクセルウィキ .

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。