Перевірте, чи текст клітинки Excel чисельний, використовуючи лише формулу


13

Я повинен з'ясувати, чи є текст моїх комірок числовим значенням і хотів використовувати елегантний метод, не VBA , який не перешкоджає його поточному стану чи значенню.

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

число як текстові приклади

Перші три я використав, =ISNUMBER(...)і моя остання спроба =ISNUMBER(TRIM(...)).

Єдиний метод, який я використовував, що не використовує VBA, - це перекрити мої поточні значення, використовуючи текст у стовпці, а потім використовувати =ISNUMBER()функцію.

Примітка. Я знаю VBA і Excel і розумію, що можу створити визначену користувачем функцію. Але я не хочу, оскільки це накладає потрібну для макросу робочу книгу або додатковий модуль, який потрібно встановити, що я можу зробити і робити в деяких випадках.

Я буду вдячний за будь-які поради, думки (навіть якщо вони мені скажуть, що це неможливо зробити) або рішення VBA (однак відповідь не буде позначено).


4
FWIW альтернативою ISNUMBERє рідко використовувані N. Щось подібне=NOT(ISERR(N(--A1)))
brettdj

1
@brettdj дякую за це! Для відповіді, яка використовує найменшу кількість символів і є швидкою та брудною, яку я зараз отримав =N(-A1). Не знав, що теж існує.
glh

Яке призначення дефісів (ив) перед посиланням на клітинку? І чому в кожного з вас є різна кількість дефісів?
youcantryreachingme

Відповіді:


30

Спробуйте помножити значення комірки на 1, а потім запустити IsNumberі Trimфункції, наприклад:

=IsNumber(Trim(A1)*1)


2
+1 за швидкість і хороший враження. Це смокче, коли речі прямо тобі в обличчя, але ти їх не бачиш!
glh

1
Також я дізнався, що вам навіть не потрібно користуватися trim. Мої вітання.
glh

2
@glh іноді просто потрібно інший набір очей, щоб побачити, що прямо перед тобою. :)
Девід Земенс

5

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

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

Тут функції очищення та обрізки - це видалення пробілів та жодних символів для друку. Значення функції перетворює рядок у число, і за допомогою перетвореного рядка ми можемо перевірити, чи є значення числом.


3
+1. Мені подобається швидко і брудно, =VALUE(A1)оскільки в моїх даних не буде потреби CLEAN(). Я не знав, що VALUE()функція існує. Просто зауважте, що TRIM()нічого не робить, оскільки пробіли все одно ігноруються.
glh

3

Найкоротший відповідь , який я отримав на моє запитання:

=N(-A1)

Дякую brettdj


2

Я знаю, що ця публікація стара, але я вважаю це дуже корисним у цьому випадку, у мене була формула, яка повертається (333), навіть якщо це число, і ІЗНАЧЕНО скаже, що це число, хоча я не хотів відповіді, якщо він мав символи, окрім цифр. Наступне працювало для мене.

=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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.