Excel-эквивалент String.contains(String otherString) в Java

Excel-эквивалент String.contains(String otherString) в Java

У меня есть ячейка с довольно архаичной строкой. (Это стоимость маны заклинания 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).

решение1

Что-то вроде этого =IF(ISERROR(FIND("text", A1)), "false", "true")должно сработать.

Если вам необходимо использовать подстановочные знаки, вы можете попробовать searchвместо find.

решение2

Я могу ошибаться, но мне кажется, вы ищетенаходить().

FIND( substring, string, [start_position] )

решение3

Это позволит:

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

Связанный контент