Excel-Äquivalent zu Javas String.contains(String otherString)

Excel-Äquivalent zu Javas String.contains(String otherString)

Ich habe eine Zelle mit einem ziemlich veralteten String. (Das sind die Manakosten eines Zaubers aus Magic: the Gathering.) Beispiele sind 3g, 2gg, 3ur, und bg. Es gibt 5 mögliche Buchstaben ( g w u b r). Ich habe 5 Spalten und möchte unten zählen, wie viele von jedem darin enthalten sind. Meine Tabelle könnte also so aussehen

  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

Im Grunde genommen möchte ich etwas, das so aussieht =if(contains($A2,C$1),1,0)und das ich über alle 5 Spalten und alle 270 Karten nach unten ziehen kann. (Das sind übrigens echte Daten. Es ist kein Mocking :-).)

In Java würde ich Folgendes tun:

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

Gibt es so etwas bei der Verwendung von Excel 2010?

Ich habe versucht find(), und zu verwenden search(), und sie funktionieren hervorragend, wenn die Farbe vorhanden ist. Aber wenn die Farbe nicht vorhanden ist, wird sie zurückgegeben #value– also erhalte ich beispielsweise 1 1 #value #value #valueanstelle von 1 1 0 0 0Centaur Healer (Zeile 2). Die verwendete Formel war if(find($A2,C$1) > 0, 1, 0).

Antwort1

Etwas in der Art von =IF(ISERROR(FIND("text", A1)), "false", "true")sollte funktionieren.

Wenn Sie Platzhalter verwenden müssen, können Sie searchanstelle von versuchen find.

Antwort2

Ich könnte mich irren, aber ich glaube, Sie suchenfinden().

FIND( substring, string, [start_position] )

Antwort3

Das wird es tun:

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

verwandte Informationen