У меня есть клетка с довольно архаичной строкой. (Это стоимость маны Magic: The Gathering по буквам.) Примеры являются 3g
, 2gg
, 3ur
, и bg
. Есть 5 возможных букв ( g w u b r
). У меня есть 5 столбцов, и я хотел бы посчитать внизу, сколько в них содержится. Так что моя таблица может выглядеть так
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
По сути, я хочу что-то похожее, =if(contains($A2,C$1),1,0)
и я могу перетащить его через все 5 столбцов и опустить все 270 карт. (Между прочим, это фактические данные. Это не насмешливо :-).)
В Java я бы сделал это:
String[] colors = { "B", "G", "R", "W", "U" };
for(String color : colors) {
System.out.print(cost.toUpperCase().contains(color) ? 1 : 0);
System.out.print("\t");
}
Есть ли что-то подобное в использовании Excel 2010.
Я пытался использовать, find()
и search()
они отлично работают, если цвет существует. Но если цвет не существует, он возвращается #value
- поэтому я получаю 1 1 #value #value #value
вместо 1 1 0 0 0
, например, Centaur Healer (строка 2). Используемая формула была if(find($A2,C$1) > 0, 1, 0)
.
search
вместоfind
. Все еще не уверены, в чем разница, но это работает для моих целей.