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

0
NuMs 13 Дек 2014 в 18:10
1
Если вы условно форматируете, используя формулу, вы могли бы проанализировать строку, чтобы получить только числовые цифры, а затем использовать функцию VALUE(), чтобы проверить ее числовое значение на соответствие вашему условию. Это требует, чтобы вы могли найти числа в тексте, поэтому зависит от формата строки. Если все они принимают форму «nnn text», это достаточно просто. Дайте мне знать, если вам нужно руководство по этому вопросу.
 – 
fraggle
13 Дек 2014 в 18:48
Как мне это сделать? Ячейка всегда будет начинаться с 3-х или 4-значного числа, затем пробела и текста.
 – 
NuMs
13 Дек 2014 в 23:15
Эй. Я могу сделать меньше/больше, но у меня проблемы с промежуточными проверками X и Y?
 – 
NuMs
14 Дек 2014 в 01:56
Похоже, у вас все в порядке? Извините, что не ответил вам, был на светском мероприятии. Думаю, в конце концов я тебе не понадобился, а?
 – 
fraggle
14 Дек 2014 в 03:18

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)

Вы можете преобразовать строки в числа, умножив их на 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)
1
Rick Hitchcock 31 Дек 2014 в 02:23
Привет. Это не работает. Я думаю, проблема может заключаться в том, что не в каждой ячейке есть числа + текст, в некоторых будет просто число, и эта формула ищет пробел, которого нет в числовых ячейках.
 – 
NuMs
28 Дек 2014 в 08:59
Мой ответ был основан на вашем комментарии о том, что данные всегда будут содержать пробел и текст. Я обновлю его, когда у меня будет возможность.
 – 
Rick Hitchcock
28 Дек 2014 в 19:10
=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 14 Дек 2014 в 02:10
Вы также можете использовать известные разделители, такие как пробел, в предоставленных вами примерах данных, а также использовать функции длины строки, поиска и середины слева направо для определения чисел разной длины.
 – 
fraggle
14 Дек 2014 в 12:29