Если ячейка A1 имеет значение «600 T», есть ли способ применить число меньше / между / больше, чем условное форматирование на основе числа, по существу игнорируя любой текст, который может быть в ячейке?

0
NuMs 13 Дек 2014 в 18:10

2 ответа

Лучший ответ

Логические операторы, такие как AND, уже возвращают ИСТИНА или ЛОЖЬ.

Итак, это:

=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)

Итак, это:

=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)

=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)
1
Rick Hitchcock 30 Дек 2014 в 23:23
=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 для проверки цифр в середине или конце строки.

1
NuMs 13 Дек 2014 в 23:10