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