Java の String.contains(String otherString) に相当する Excel の機能

Java の String.contains(String otherString) に相当する Excel の機能

かなり古風な文字列を持つセルがあります。(マジック:ザ・ギャザリングの呪文のマナコストです。) 例として3g、、、、などが2ggあります。文字は 5 つあります ( )。列が 5 つあり、各列に何文字含まれているかを下部でカウントしたいと思います。スプレッドシートは次のようになります。3urbgg w u b r

  A                   B        C  D  E  F  G
 +--------------------------------------------
1|Name                Cost     G  W  U  B  R
2|Centaur Healer      1gw      1  1  0  0  0
3|Sunspire Griffin    1ww      0  1  0  0  0 // just 1, even though 1ww
4|Rakdos Shred-Freak  {br}{br} 0  0  0  1  1

基本的に、次のようなものが欲しいのです=if(contains($A2,C$1),1,0)が、それを 5 つの列すべてにわたってドラッグし、270 枚ほどのカードすべてにドラッグすることができます。(ちなみに、これらは実際のデータです。モックではありません :-) 。)

Java では次のようにします:

String[] colors = { "B", "G", "R", "W", "U" };
for(String color : colors) {
    System.out.print(cost.toUpperCase().contains(color) ? 1 : 0);
    System.out.print("\t");
}

Excel 2010 を使用するとこのようなことが起こるのでしょうか。

find()とを使用してみましたsearch()が、色が存在する場合はうまく機能します。ただし、色が存在しない場合は、#value-が返されるため、たとえば Centaur Healer (行 2) の場合、1 1 #value #value #valueではなくが返されます1 1 0 0 0。使用した数式は ですif(find($A2,C$1) > 0, 1, 0)

答え1

のようなものが=IF(ISERROR(FIND("text", A1)), "false", "true")機能するはずです。

searchワイルドカードを使用する必要がある場合は、の代わりにを試してくださいfind

答え2

間違っているかもしれませんが、あなたが探しているのは探す()

FIND( substring, string, [start_position] )

答え3

これにより、次のことが行われます。

=N(NOT(ISERR(SEARCH(C$1,$B2))))

関連情報