javaのString.contains(String otherString)と同等のExcel


1

かなり古風な文字列を持つセルがあります。(それは魔法のマナ・コストです:ザ・ギャザリングは呪文。)例としては3g2gg3ur、とbg。5つの可能な文字(g w u b r)があります。5つの列があり、それぞれの列の数を一番下で数えたいと思います。したがって、スプレッドシートは次のようになります

  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列すべてにドラッグし、いくつかのカードすべてを下にドラッグできます。(ちなみに、これらは実際のデータです。It笑されていません:-)。)

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)です。

回答:


2

の線に沿って何か=IF(ISERROR(FIND("text", A1)), "false", "true")が動作するはずです。

ワイルドカードを使用する必要がある場合は、のsearch代わりに試すことができますfind


これは私が使用したものですが、のsearch代わりに使用しましたfind。違いが何であるかはまだわかりませんが、私の目的には役立ちます。
corsiKa

私が見ることができることから、そして上で述べたように、ワイルドカードのサポートは、2つの間の主な(唯一の?)違いであるように思われます。ところで、役に立つかもしれない別のバリアント:=IFERROR(FIND("text", A1), "error")
カラン

ワイルドカードのサポートに加えて、SEARCH大文字と小文字は区別されませんが、大文字と小文字は区別されFINDます。
クリスニールセン

1

私は間違っているかもしれませんが、find()を探していると思います。

FIND( substring, string, [start_position] )

1
試しましたfindが、存在しない場合は、比較する値がありません。代わりに0 1 0 0 0私が取得#VALUE 1 #VALUE #VALUE #VALUE
corsiKa

1
@corsiKa:stackoverflow.com/questions/9513795 / ...をご覧くださいIFERROR。を使用して何かを引き出すことができるかもしれません。時には#VALUEも列が...それを表示するのに十分な幅ではない意味するかもしれません
タマラWijsman

素晴らしいトム。私はやった=IFERROR(IF(SEARCH(K$1,$E2)>0,1,0),0)、それは完璧に働いた。(私の例にK$1,$E2相当するものがあり$A2,C$1ます。
corsiKa12年

1

これにより:

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


1
検索の利点は、ケースを気にする必要がないことです...そして、後でその1と0を別のものに変更したい場合は、これがより良いです:= IF(ISERR(SEARCH(C $ 1、$ B2))、0,1)
アルベルト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.