Tengo una celda que tiene una cadena bastante arcaica. (Es el coste de maná de un hechizo Magia: la Reunión.) Los 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 contiene de cada una. Así que mi hoja de cálculo podría tener este aspecto
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 parezca =if(contains($A2,C$1),1,0)
y puedo arrastrarlo a través de las 5 columnas y hacia abajo de las 270 algunas cartas. (Esos son datos reales, por cierto. No está burlado :-).)
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");
}
¿Hay algo como esto en el uso de Excel 2010?
Traté de usar find()
y search()
y funcionan muy bien si el color existe. Pero si el color no existe, vuelve. #value
- así me sale 1 1 #value #value #value
en lugar de 1 1 0 0 0
para, por ejemplo, Centaur Healer (fila 2). La fórmula utilizada fue if(find($A2,C$1) > 0, 1, 0)
.
fuente
search
en lugar defind
. Todavía no estoy seguro de cuál es la diferencia, pero funciona para mis propósitos.=IFERROR(FIND("text", A1), "error")
SEARCH
no es sensible a mayúsculas, mientrasFIND
es.Podría estar equivocado, pero creo que estás buscando encontrar() .
fuente
find
pero si no existe, no tengo un valor para compararlo. En lugar de0 1 0 0 0
yo obtengo#VALUE 1 #VALUE #VALUE #VALUE
IFERROR
. A veces, #VALUE también puede significar que la columna no es lo suficientemente ancha para mostrarla ...=IFERROR(IF(SEARCH(K$1,$E2)>0,1,0),0)
y funcionó perfectamente. (laK$1,$E2
hay el equivalente de$A2,C$1
en mi ejemploEsto lo hara:
=N(NOT(ISERR(SEARCH(C$1,$B2))))
fuente