Tengo un celular que tiene un String bastante arcaico. (Es el coste de maná de un hechizo de Magic: the Gathering). Algunos ejemplos son 3g
, 2gg
, 3ur
y bg
. Hay 5 letras posibles ( g w u b r
). Tengo 5 columnas y me gustaría contar en la parte inferior cuántas de cada una contiene. Entonces mi hoja de cálculo podría verse así
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
Básicamente, quiero algo que se vea así =if(contains($A2,C$1),1,0)
y pueda arrastrarlo por las 5 columnas y por las 270 tarjetas. (Por cierto, esos son datos reales. No se burlan de ellos :-) .)
En Java haría esto:
String[] colors = { "B", "G", "R", "W", "U" };
for(String color : colors) {
System.out.print(cost.toUpperCase().contains(color) ? 1 : 0);
System.out.print("\t");
}
¿Existe algo como esto al usar Excel 2010?
Intenté usar find()
y search()
funcionan muy bien si el color existe. Pero si el color no existe, regresa #value
, por lo que obtengo 1 1 #value #value #value
en lugar de 1 1 0 0 0
, por ejemplo, Centaur Healer (fila 2). La fórmula utilizada fue if(find($A2,C$1) > 0, 1, 0)
.
Respuesta1
Algo parecido a =IF(ISERROR(FIND("text", A1)), "false", "true")
debería funcionar.
Si necesita utilizar comodines, puede intentarlo search
en lugar de find
.
Respuesta2
Podría estar equivocado, pero creo que estás buscandoencontrar().
FIND( substring, string, [start_position] )
Respuesta3
Esto lo hara:
=N(NOT(ISERR(SEARCH(C$1,$B2))))