
Я пытаюсь вложить более двух ( ISNUMBER
SEARCH
) операторов в ячейку, и последние два не работают. Первые два аргумента ("n/a" и "r") работают, но третий и четвертый вытягивают неверные данные.
Можно ли иметь более двух поисков в ячейке? Где моя формула неверна?
=IF(ISNUMBER(SEARCH("N/A",$L2)),$E2+$AY$2,IF(ISNUMBER(SEARCH("r",$L2)),$E2+$AY$3,IF(ISNUMBER(SEARCH("rr",$L2)),$E2+$AY$4,IF(ISNUMBER(SEARCH("rrr",$L2)),$E2+$AY$5))))
Заранее благодарны за Вашу помощь
решение1
Это вызвано тем, что формула находит один "r" в значениях ячеек "rr", а также "rrr". Попробуйте изменить порядок условия ISNUMBER. Начните с "rrr", затем "rr" и, наконец, "r". Это должно сработать.
=IF(ISNUMBER(SEARCH("N/A",$L2)),$E2+$AY$2,IF(ISNUMBER(SEARCH("rrr",$L2)),$E2+$AY$5,IF(ISNUMBER(SEARCH("rr",$L2)),$E2+$AY$4,IF(ISNUMBER(SEARCH("r",$L2)),$E2+$AY$3))))
С наилучшими пожеланиями, Лукас
решение2
Преобразуя формулу, мы видим:
IF( ISNUMBER(SEARCH("N/A",$L2)),
$E2+$AY$2,
IF( ISNUMBER(SEARCH("r",$L2)),
$E2+$AY$3,
IF( ISNUMBER(SEARCH("rr",$L2)),
$E2+$AY$4,
IF( ISNUMBER(SEARCH("rrr",$L2)),
$E2+$AY$5
)
)
)
)
Теперь мы видим:
- Последний (самый внутренний) IF() не содержит раздел ELSE;
- 2-й IF() возвращает True для любого значения, проверенного другими внутренними IF(), поэтому никакой внутренний IF() не может вернуть True, поскольку внешние IF() уже сделали это.
Рекомендация: заменить SEARCH() простой проверкой уравнений.
решение3
С помощью SEARCH
функции ISNUMBER
можно проверить, содержит ли ячейка определенный текст или нет.
SEARCH
возвращает позицию искомой строки, если она найдена, а формула проверяет, найдена ли искомая строка, используя ISNUMBER
для нахождения ее числовых позиций.
В вашем случае при поиске rr
или rrr
формула находит r
среди rr
и в rrr
и каждый раз вычисляет $E2+$AY$3
вместо $E2+$AY$4
или $E2+$AY$5
.
Если L2
содержит любой другой текст, rr
то rrr
та же формула будет работать.
@Muji проделал трюк, использовал строки поиска в обратном порядке, так что формула находит сначала &, а затем rrr
и работает правильно.rr
r
rrr
Простые IF function
могут успешно все это проверить.
=IF($L$2="N/A",$E$2+$AY$2,IF($L$2="r",$E$2+$AY$3,IF($L$2="rr",$E$2+$AY$4,IF($L$2="rrr",$E$2+$AY$5))))
При необходимости измените ссылки на ячейки в формуле.