Проверьте, является ли текст ячейки Excel числовым, используя только формулу

13

Я должен выяснить, является ли текст моих ячеек числовым значением и он хотел бы использовать элегантный метод не VBA , который не препятствует его текущему состоянию или значению.

Я обнаружил, что ISNUMBER()функция работает только в том случае, если ячейки имеют числовое форматирование или не имеют пробелов при форматировании текста, например:

число в качестве примеров текста

Для первых трех я использовал =ISNUMBER(...)и моя последняя попытка =ISNUMBER(TRIM(...)).

Единственный метод, который я использовал, который не использует VBA, - это переопределить мои текущие значения с помощью текста на столбцы, а затем использовать =ISNUMBER()функцию.

Примечание. Я хорошо знаю VBA и Excel и понимаю, что могу создать пользовательскую функцию. Но я не хочу, так как это требует наличия макроса требуемой рабочей книги или надстройки, что я мог и делал в некоторых случаях.

Я буду признателен за любые советы, мысли (даже если они скажут мне, что это невозможно) или решения VBA (однако не будут отмечены как ответ).

GLH
источник
4
FWIW альтернатива ISNUMBERредко используется N. Как-то так=NOT(ISERR(N(--A1)))
brettdj
1
@brettdj спасибо за это! Для ответа, который использует наименьшее количество символов и является быстрым и грязным, я теперь получил =N(-A1). Не знал, что существует.
гл.
Какова цель дефиса перед ссылкой на ячейку? И почему у каждого из вас есть разное количество дефисов?
youcantryreachingme

Ответы:

30

Попробуйте умножения значения ячейки на 1, а затем запустив IsNumberи Trimфункции, например ,:

=IsNumber(Trim(A1)*1)

Дэвид Земенс
источник
2
+1 за скорость и хороший ответ. Это отстой, когда вещи прямо перед твоим лицом, но ты их не видишь!
гл.
1
Также я узнал, что вам даже не нужно использовать trim. Мое почтение.
гл.
2
@glh иногда просто требуется другой взгляд, чтобы увидеть, что прямо перед тобой. :)
Дэвид Земенс
5

Предполагая, что значение, которое вы хотите пересчитать, находится в A1, вы можете использовать следующую формулу:

=ISNUMBER(VALUE(TRIM(CLEAN(A1)))

Здесь функции очистки и обрезки удаляют пробелы и отсутствуют печатные символы. Значение функции преобразует строку в число, и с помощью преобразованной строки мы можем проверить, является ли значение числом.

Сэм Плюс Плюс
источник
3
+1. Как быстрый и грязный, мне нравится, =VALUE(A1)потому что мои данные не понадобятся CLEAN(). Я не знал, что VALUE()функция существует. Просто отметить, что TRIM()ничего не делает, так как пробелы все равно игнорируются.
гл.
3

Самый короткий ответ, который я получил на мой вопрос:

=N(-A1)

Спасибо бреттдж

GLH
источник
2

Я знаю, что это сообщение является старым, но я нашел это очень полезным в этом случае, у меня была формула, которая возвратила (333), даже если это число, и ISNUMBER скажет, что это число, даже если я не хотел получать ответ, если он имел символы отличные от цифр. Следующее сработало для меня.

=IF(AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))),"Is Number","")

Это работает, если есть какие-либо символы, кроме цифр. Если вы просто хотите истинное ложное падение, ЕСЛИ

=AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))

Как заявил Дэвид Земенс

=IsNumber(Trim(A1)*1)

Работает, но если есть «-» или число в скобках, оно скажет, что это число.

Я надеюсь, что это поможет вам или другим.

Mouthpear
источник
0

если кому-то нужно отфильтровать ячейки, которые содержат что-либо не числовое:

=AND(SUMPRODUCT(--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))=LEN(A1),A1<>"")

десятичные и отрицательные результаты FALSE

Robotik
источник