エクセル関数であいまい検索をする方法です。以下の表(データ)があります。
D1に「e」と入力すると、「e」を含む「1 EXCEL」「3 INDEX」「6 UPPER」が表示されるようにします。 欲しい結果は以下となります。
まず、データに計算用の列をひとつ設けます。 C1に =IF(ISERROR(FIND(UPPER($D$1),B1)),"",ROW()) と入力し、データの一番下までドラッグして下さい。
D1になにも入力していない状態なので、C列には上から1,2,3…と表示されます。 試しにD1に「e」と入力してみて下さい。以下のように、「e」を含む「EXCEL」「INDEX」「UPPER」の行だけに数字が表示されます。
次は、このC列を使ってE列に1,3,6を表示させます。 E1に =IFERROR(INDEX(A:A,SMALL(C:C,ROW(C1)),1),"") と入力、下までドラッグして下さい。
最後にF列に =IFERROR(INDEX(B:B,SMALL(C:C,ROW(C1)),1),"") と入力、下までドラッグします。
試しにD1に 「m」と入力してみて下さい。 結果は、以下のように、「m」を含む「MATCH」と「MAX」が表示されます。
意味の説明は少し難しいのですが、SMALLを使い、C列から1番目(ROW(C1)=1)に小さいもの、2番目(ROW(C2)=2)に小さいもの、が上から何番目にあるかをまず計算し、 それを使ってA列とB列から値を拾っています。 C列のUPPER関数は、今回の例がB列が全て大文字の為、D1に「e」と小文字で入力しても「E」と認識される為に使っています。 UPPER関数は小文字を大文字に変換する関数、逆に大文字を小文字に変換する関数はLOWER関数です。 また、データの表とあいまい検索の表示は別シートでも問題ありません。 →エクセル関数にこだわる! |
|