12

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

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

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

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

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

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

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

5 ответов5

27

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

=IsNumber(Trim(A1)*1)

5

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

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

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

2

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

=N(-A1)

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

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)

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

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .