![Excel で、別の列を入れずにルックアップ配列でテキスト関数を使用するにはどうすればよいでしょうか?](https://rvso.com/image/1451222/Excel%20%E3%81%A7%E3%80%81%E5%88%A5%E3%81%AE%E5%88%97%E3%82%92%E5%85%A5%E3%82%8C%E3%81%9A%E3%81%AB%E3%83%AB%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E9%85%8D%E5%88%97%E3%81%A7%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
vlookup または match 関数を使用しているが、検索マテリアルで複雑な処理を実行する必要がある場合、別の列を追加せずに、検索配列でこれを行う方法はありますか?
「FOOBAR 123」という検索値があり、「FOO BAR123」というレコードを返したいとします。
理想的には、次のようなことをしたい
=MATCH(SUBSTITUTE(A1," ",""),SUBSTITUTE('Sheet1'!$A:A," ",""),0)
しかし、SUBSTITUTE
ルックアップ配列ではそれが壊れます。
それは可能です
=MATCH(SUBSTITUTE(A1," ",""),'Sheet1'!$B:B,0)
そして、=SUBSTITUTE(A1," ","")
Sheet1 に列を追加しますが、これを実行する必要を回避する方法はありますか?
答え1
おそらく私はあなたの質問を誤解しているのでしょうが、そうでなければうまくいくはずです。
=SUBSTITUTE(MATCH(A1,'Sheet1'!$A:A,0)," ","")
答え2
最初の数式は、配列数式としてコミットすれば (つまり、CTRL + SHIFT + ENTER を使用) 問題ありませんが、その場合、列 A 全体を参照しないことを強くお勧めします。そうしないと、リソースを非常に消費する数式になります。
プロセスを 2 つの列に分割すると、計算の負荷も軽減されます。
={MATCH(SUBSTITUTE(A1," ",""),SUBSTITUTE($A:$A8000," ",""),0)}
次の2列のソリューションよりも集中的になります
=SUBSTITUTE(A1," ","") //in column B
=MATCH(SUBSTITUTE(A1," ",""),$B1:$B8000,0)
最初のケースでは、列 A の置換は各行に対して 1 回計算する必要がありますが、2 番目のケースでは、列 A の置換は 1 回だけ計算する必要があります。
@XOR LX が回答しました。質問が解決済みとしてマークするためにこれを投稿しましたが、功績は XOR LX に帰属します。