Условное форматирование на основе числа в ячейке, содержащей как текст, так и числа

Если ячейка 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 для проверки цифр в середине или конце строки.

Другие вопросы по тегам