1

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

3 ответа3

2

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

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

1

Я могу ошибаться, но я верю, что вы ищете find().

FIND( substring, string, [start_position] )
1

Это будет делать:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .