1. ホーム
  2. excel

[解決済み] MS Excel で部分文字列を使用して文字列のセルインデックスを検索する

2022-03-07 14:45:26

質問

私はExcelのスプレッドシートでタスクを完了しようとしています。文字列のリストがあり、それぞれの文字列は少し長い文字列の部分文字列になっています。各文字列の部分文字列(セルインデックス)を長い文字列の範囲(列のセル範囲)に対して検索し、実際のセルインデックスに1を加えたもの(またはセルインデックスの数値部分に1を加えたもの、例えばB451 => 451+1 = 452)を返したいのですが、どうすればよいでしょうか?

例えば、シートのセルG2にある文字列 "AAA"を検索したいとします。 ソート済みデータ のセル範囲 B2:B1001 に対して、シート データオール で、文字列 "BAAAB" が見つかった、範囲 B2:B1001 のセルインデックス + 1 が必要です。文字列と部分文字列は一意であるため、複数ヒットする可能性はない。

この数式は、シートの1000列の下に拡張する必要があります。 ソート済みデータ しかし、検索範囲はずっと同じままです。

私は式を持っています

=COUNTIF('data_all'!$B$2:$B$1001,"*"&'sorted_data'!G2&"*") > 0

しかし、これはTRUEかFALSEを返すだけで、私が望むものではありません。何かアイデアはありますか?

解決方法は?

MATCHを使って行番号+1を返す

=MATCH("*"&G2&"*",$B:$B,0)+1

MATCH("*"&G2&"*",$B:$B,0) は行番号を返し +1 が1行追加されます。

そして、INDEXを使って、その行の任意の列の値を返すことができます。

=INDEX($A:$A,MATCH("*"&G2&"*",$B:$B,0)+1)

これは、マッチが見つかった下の行のA列の値を返すことになります。

ご覧のように、全列参照を使用しているため、データを損なうことなく大きくすることができます。 また、INDEX/MATCHは非常に最適化されているので、計算式の数は計算時間にそれほど大きな影響を与えません。