Eu tenho uma célula que possui uma String bastante arcaica. (É o custo de mana de um feitiço Magic: the Gathering.) Exemplos são 3g
, 2gg
, 3ur
e bg
. Existem 5 letras possíveis ( g w u b r
). Tenho 5 colunas e gostaria de contar na parte inferior quantas de cada uma contém. Minha planilha pode ficar assim
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
Basicamente, eu quero algo que se pareça =if(contains($A2,C$1),1,0)
e possa arrastá-lo por todas as 5 colunas e para baixo em todos os 270 cartões. (A propósito, esses são dados reais. Não são ridicularizados :-).)
Em Java eu faria isso:
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 assim no uso do Excel 2010.
Eu tentei usar find()
e search()
eles funcionam muito bem se a cor existir. Mas se a cor não existir, ela retorna #value
- então recebo 1 1 #value #value #value
em vez 1 1 0 0 0
de, por exemplo, Centaur Healer (linha 2). A fórmula usada foi if(find($A2,C$1) > 0, 1, 0)
.
Responder1
Algo parecido com =IF(ISERROR(FIND("text", A1)), "false", "true")
deveria funcionar.
Se precisar usar curingas, você pode tentar search
em vez de find
.
Responder2
Posso estar errado, mas acredito que você está procurandoencontrar().
FIND( substring, string, [start_position] )
Responder3
Isso fará:
=N(NOT(ISERR(SEARCH(C$1,$B2))))