Это старый вопрос, но это решение для тех, кто использует Excel 2016 или новее вы можете устранить необходимость вложенные структуры, используя новый IFS(condition1, return1 [,condition2, return2] ...)
условный.
Я отформатировал его, чтобы сделать его визуально понятнее о том, как использовать его для случая этого вопроса:
=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)
С SEARCH
возвращает ошибку, если строка не найдена, я завернул с ISERROR(...)=FALSE
к проверьте правду и затем верните требуемое значение. Было бы здорово, если бы SEARCH
вернул 0 вместо ошибки для удобочитаемости, но это только то, как это работает, к сожалению.
Другое важное значение имеет то, что IFS
вернет совпадение, которое он находит первым, и поэтому заказ имеет важное значение. Например, если мои строки были Surf, Surfing, Surfs
как String1,String2,String3
выше, а моя строка ячеек была Surfing
, она соответствовала бы первому члену вместо второго, потому что подстрока была Surf
. Таким образом, общие знаменатели должны быть последними в списке. Моему IFS
необходимо будет заказать Surfing, Surfs, Surf
(замена этого файла будет осуществляться с использованием Surfing
и Surfs
), но Surf
должен быть последним.
Хитрость! Спасибо gwin003 :) Я все еще немного удивлен, что для этого нет более интуитивной функции. – geotheory
Да, я согласен, было бы неплохо, если бы была функция 'CONTAINS (« Текст », ячейка). – gwin003
Что-то я застрял вначале: вам действительно нужно использовать 'ISNUMBER', а также' SEARCH'. Я использовал это внутри 'IF' и придумал:' = IF (ISNUMBER (SEARCH ($ G $ 1, A73)), A73, B73) ' – Matthew