Equivalente de Excel de String.contains de Java (String anotherString)

1

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, 3ury 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).

corsiKa
fuente

Respuestas:

2

Algo a lo largo de las líneas de =IF(ISERROR(FIND("text", A1)), "false", "true") Deberia trabajar.

Si necesitas usar comodines, puedes probar search en lugar de find.

Karan
fuente
Esto es lo que terminé usando, excepto que usé search en lugar de find. Todavía no estoy seguro de cuál es la diferencia, pero funciona para mis propósitos.
corsiKa
Por lo que puedo ver y como mencioné anteriormente, el soporte de comodines parece ser la principal (¿solo?) Diferencia entre los dos. Por cierto, otra variante que podría ser útil: =IFERROR(FIND("text", A1), "error")
Karan
Además de soporte de comodín, SEARCH no es sensible a mayúsculas, mientras FIND es.
chris neilsen
1

Podría estar equivocado, pero creo que estás buscando encontrar() .

FIND( substring, string, [start_position] )
Zoredache
fuente
1
Lo intenté find pero si no existe, no tengo un valor para compararlo. En lugar de 0 1 0 0 0 yo obtengo #VALUE 1 #VALUE #VALUE #VALUE
corsiKa
1
@corsiKa: Echa un vistazo stackoverflow.com/questions/9513795/… como usted podría ser capaz de sacar algo usando IFERROR. A veces, #VALUE también puede significar que la columna no es lo suficientemente ancha para mostrarla ...
Tom Wijsman
Tom eso es excelente. yo si =IFERROR(IF(SEARCH(K$1,$E2)>0,1,0),0) y funcionó perfectamente. (la K$1,$E2 hay el equivalente de $A2,C$1 en mi ejemplo
corsiKa
1

Esto lo hara:

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

Alberto
fuente
1
Por cierto, la ventaja de la búsqueda es que no tiene que preocuparse por el caso ... Y si desea cambiar más tarde el 1 y el 0 a otra cosa, esto es mejor: = IF (ISERR (BÚSQUEDA (C $ 1, $ B2)), 0,1)
Alberto