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 #value
anstelle von 1 1 0 0 0
Centaur 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 search
anstelle 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))))