Условное форматирование на основе числа в ячейке, содержащей как текст, так и числа
Если ячейка A1 имеет значение "600 T", есть ли способ применить число меньше / между / больше, чем условное форматирование на основе числа, по существу игнорируя любой текст, который может находиться в ячейке?
2 ответа
Булевы операторы, такие как AND
уже вернуть TRUE или FALSE.
Итак, это:
=IF(AND(VALUE(LEFT(A1,3))>=X,VALUE(LEFT(A1,3))<=Y),TRUE,FALSE)
… эквивалентно:
=AND(VALUE(LEFT(A1,3))>=X,VALUE(LEFT(A1,3))<=Y)
Вы можете привести строки к числам, умножив на 1.
Итак, это:
=VALUE(LEFT(A1,3))
… эквивалентно:
=LEFT(A1,3)*1
Использование этих методов уменьшает вашу формулу:
=IF(AND(VALUE(LEFT(A1,3))>=X,VALUE(LEFT(A1,3))<=Y),TRUE,FALSE)
… к этому:
=AND(LEFT(A1,3)*1>=X,LEFT(A1,3)*1<=Y)
Поскольку ваши номера могут также иметь 4 цифры, вы можете вернуть числовую часть следующим образом:
=LEFT(A1,FIND(" ",A1))
Это возвращает пробел: "600 " … но это не проблема, так как вы приводите его к числу.
Итак, ваша окончательная формула будет выглядеть так:
=AND(LEFT(A1,FIND(" ",A1))*1>=X,LEFT(A1,FIND(" ",A1))*1<=Y)
Обновить
Если ваши числа не содержат текста, приведенная выше формула не будет выполнена с #VALUE!, потому что FIND
ищет место, которое не существует.
Вы можете исправить это, добавив пробел к FIND
Второй аргумент Итак, ваша истинная окончательная формула будет выглядеть так:
=AND(LEFT(A1,FIND(" ",A1&" "))*1>=X,LEFT(A1,FIND(" ",A1&" "))*1<=Y)
=VALUE(LEFT(A1,3))<=X
=VALUE(LEFT(A1,3))>=X
Проверяет, являются ли первые 3 символа (если число) A1 меньше или больше X.
=IF(AND(VALUE(LEFT(A1,3))>=X,VALUE(LEFT(A1,3))<=Y),TRUE,FALSE)
Проверяет, находятся ли первые 3 символа (если число) A1 между X и Y.
Вместо этого можно использовать MID или RIGHT для проверки цифр в середине или конце строки.