2017-09-05 24 views
1

vlookupの基本的な使い方をワイルドカードで理解していますが、最近問題が発生しています。ワイルドカードを使用したVlookupが動作しない(部分文字列一致)長い値の場合

セルに含まれている値を文字列の一部として検索する必要があります。以下のサンプルでは、​​colCのcolAを検索する必要がありますが、col Dの値をcol Bに返します。

私は=VLOOKUP("*"&A1&"*",C$1:D$2,2,0)を使用しています。これはB1でのみ動作します。

なぜB2 & B3同じように機能しないのですか?どんな解決策ですか?

サンプル:あなたの調査とアクセルによってコメントを1として

Sample

+0

セルC2のC335の後の数値を削除すると、その関数は動作します。私は本当に理由を知らない。 – Luke

+0

私が知る限り、これは文書化されていませんが、 'lookup_value'も' lookup_array'内の単一セル値も255文字を超えることはできません。これは '* LOOKUP'と関連しており、' MATCH'にも関連しています。 –

+0

長い文字列では機能しない式に加えて、短い文字列であっても、数式は部分一致の結果を返します。あなたの例では、 'A1:= R7'なら' a'を返すでしょう。 –

答えて

0

、VLOOKUPは、長さが255文字を超える値では動作しません。回避策は、より長い値を扱うSEARCH関数で配列式を使用することです。ダブルその後、+ SHIFT + ENTERCTRLを押すだけではなく、それ自体でEnterキーを押して、それを保存し、セルB1にクリックし、この式を貼り付け:{中括弧}が表示されますセルを選択、

=INDEX($D$1:$D$2,MATCH(TRUE,ISNUMBER(SEARCH(A1&",",$C$1:$C$2&",")),0)) 

あなたはそれを正しく入力した場合数式の周りにあなたの希望の結果に評価する必要があります。

この式は、まずC1:C2のすべてのセルでA1の位置を検索する配列を作成します。アレイは数字(A1が見つかった場合)とエラー(A1が見つからない場合)で構成されます。

ISNUMBERは次に

MATCHは、配列内の最初の真の値を求める(A1が見つからない場合)(A1が見つかったときに)TRUEの配列を作成し、FALSE。

INDEXは、D1:D2から対応する値を返します。

編集:式で、A1の値の後にコンマが検索されました。これにより、正確に一致することが保証されます。数式が列Cの最後の値と一致するようにするには、列Cの値の末尾にコンマも追加します。

+1

あなたの数式とOPによってポストされたデータでは、 'A'列に' C1'のようなエントリは結果を 'D'で返すことに注意してください。 –

+0

マイケルを助けてくれてありがとう、そしてあなたの説明も明らかです。私はあなたの数式を試した後、それは正常に働いた。しかし、Ronの最初のコメントが私の注目を引いたので、式が部分一致を返すことがわかりました。たとえば、A1:= R7を変更した場合でも、aを返します。正確に一致させる方法はありますか? – Luke

+0

こんにちはルーク、私はまた、コンマを列Aの値の後に見つけることが必要な数式を更新しました。これは、数式でも扱われるため、列Cのデータをカンマで終了する必要はありません。唯一の要件は、C列の各値がコンマで終わることです(各セルの最後の値を除く)。コンマの後にスペースがあるかどうかは関係ありませんが、コンマの前にスペースを入れてはいけません。 – Michael

関連する問題