Если у вас всегда есть три буквы в ячейках в строке 1, вы можете использовать:
=SUM(--ISNUMBER(SEARCH(MID(B$1,{1,2,3},1),$A2)))
Это постепенная эволюция ответа Лорана. Я сделал пару оптимизаций.
Прежде всего,
IF (
Boolean_value
, 1 , 0)
немного избыточен, так как TRUE имеет значение 1, а FALSE имеет значение 0.
Логические значения могут быть легко преобразованы в их эквивалентные целые числа с префиксом --
; сокращение от - ( - (
value
) )
, это сохраняет числовое значение, но приводит тип к целому числу.
И тогда {1,2,3}
- это массив, который (с функцией SUM
) устраняет необходимость добавления трех почти идентичных терминов.
Для обработки строк в строке 1 различной длины используйте
=SUM(--ISNUMBER(SEARCH(MID(B$1,ROW(INDIRECT("1:"&LEN(B$1))),1),$A2)))
Это похоже на первый ответ, за исключением того, что мы получаем длину строки в верхней части столбца, LEN(B$1)
, и соединяем ее со строкой « 1:
», образуя что-то вроде « 1:3
».
Это выглядит как диапазон строк, и функция INDIRECT
обрабатывает его именно так, возвращая диапазон адресов $1:$3
.
И тогда ROW()
этого возвращает массив {1,2,3}
.
Это хитрость для создания массива последовательных чисел, начало и конец которого не определены заранее.
Приведенная выше формула должна быть введена с помощью Ctrl+Shift+Enter.
Я не уверен, почему это необходимо, а первый нет.
Ваш пример / иллюстрация показывает, что в ваших строках есть пробелы.
Если это правда (но вы не хотите, чтобы пробелы считались), формула становится
=SUMPRODUCT(--(MID(B$1,ROW(INDIRECT("1:"&LEN(B$1))),1)<>" "),--ISNUMBER(SEARCH(MID(B$1,ROW(INDIRECT("1:"&LEN(B$1))),1),$A2)))
который также должен быть введен с помощью Ctrl+Shift+Enter.