Excel 2013 で部分的なテキストを検索する

Excel 2013 で部分的なテキストを検索する

Excel 2013 で、文字列が列 A の文字列と一致する行の列 B の値を検索したいと思います。複雑なのは、列 A の文字列が、検索する値文字列よりも短くなる可能性がある点です。例:

Column A    Column B
ABCD-       Result1
EF          Result2
BCD         Result3

ここで、返される文字列の例を示します。

"Result1": "ABCD-", "ABCD-EFG", "ABCD-H"
"Result2": "EF", "EFG", "EFGHIIJKL"
"Result3": "BCD", "BCDXY"

「ABCD」は結果を返しません。

検索する文字列がセル C1 にあると仮定します。

マクロに頼らなければならないのでしょうか、それともそのための公式があるのでしょうか?

上院: 実際には別のシートの列にある検索文字列がいくつかあり、先頭にワイルドカードはありません。探している値は、検索文字列がある列の隣の列に配置されている可能性があります。

UPD2: Sheet1 の列 A と列 B の内容と、Sheet2 の内容が以下のとおりであると仮定します。

SoughtString    ResultFound
ABCD-           Result1
EF              Result2
BCD             Result3
BCDXY           Result3
EFG             Result2
ABCD-EFG        Result1
EFGHIIJKL       Result2
ABCD-H          Result1
ABCD            No match

セル B2 の受け入れられた回答からわずかに変更された配列数式をコピーします。

=IFERROR(INDEX(Sheet1!B$2:B$4;MATCH(1;COUNTIF(A2;Sheet1!A$2:A$4&"*")*(Sheet1!A$2:A$4<>"");0));"No match")

答え1

2行目から10行目にデータがあると仮定すると、この「配列数式」を使用できます。

=IFERROR(INDEX(B$2:B$10,MATCH(1,COUNTIF(C1,A$2:A$10&"*")*(A$2:A$10<>""),0)),"No match")

確認済みCTRL+ SHIFT+ENTER

答え2

C1 がどのような役割を果たしているかは明らかではありません。検索文字列がすでに列に存在する場合は、それを Sheet2 の列 A として表示できます。文字列が別の場所にある場合は、他のリストの関連セルを参照するだけで列 A を作成できます。たとえば、リストが列 Z にあり、行 2 から始まる場合、A2 は になり=Z2、その数式を列 A にコピーして、必要な数よりも多くのセルを事前に入力できます (これらのセルは必要になるまで空白のままになります)。

探している文字列リストが一度に 1 つの新しいエントリで作成される場合は、新しいエントリをいずれかのリストの次の位置 (列 Z または列 A) に配置するだけで済みます。新しいエントリを C1 に入れる必要があり、新しいエントリごとに前のエントリが置き換えられる場合は、C1 エントリからリストを作成するためのマクロまたは VBA プログラムが必要になります。

これらの方法のいずれかによって、検索された文字列が列 A のリストにある時点から始めて、これが列 B に入るものになります。Result1 が B2 にあると仮定します。B2 の数式は次のようになります。

    =IF(ISERROR(FIND(Sheet1!A2,A2)),"NO MATCH",IF(FIND(Sheet1!A2,A2)=1,A2,"NO MATCH"))

必要な数だけ列 B に数式をコピーします。列 B には任意の数のエントリを事前に入力できます。列 A の関連セルに結果を生成する値が入力されるまで、これらのエントリは空白のままになります。

関連情報