Periksa apakah teks sel Excel numerik hanya menggunakan rumus

13

Saya harus mencari tahu apakah teks sel saya adalah nilai numerik dan ingin menggunakan metode non VBA yang elegan yang tidak mengganggu keadaan atau nilainya saat ini.

Apa yang saya temukan adalah bahwa ISNUMBER()fungsinya hanya berfungsi jika sel-selnya memformat angka atau tidak memiliki spasi jika format teks misalnya:

angka sebagai contoh teks

Untuk tiga pertama saya telah menggunakan =ISNUMBER(...)dan upaya terakhir saya adalah =ISNUMBER(TRIM(...)).

Satu-satunya metode yang saya gunakan yang tidak menggunakan VBA adalah menimpa nilai saya saat ini menggunakan teks ke kolom kemudian menggunakan =ISNUMBER()fungsi.

Catatan: Saya mahir dengan VBA dan Excel dan mengerti saya bisa membuat fungsi yang ditentukan pengguna. Tapi saya tidak mau karena ini memaksakan buku kerja yang diperlukan makro atau tambahan yang harus diinstal, yang saya dapat dan telah dilakukan dalam beberapa kasus.

Saya akan menghargai saran, pemikiran (bahkan jika mereka mengatakan kepada saya itu tidak dapat dilakukan) atau solusi VBA (tidak akan ditandai sebagai jawaban).

glh
sumber
4
FWIW alternatif untuk ISNUMBERyang jarang digunakan N. Sesuatu seperti ini=NOT(ISERR(N(--A1)))
brettdj
1
@ brettdj terima kasih untuk itu! Untuk jawaban yang menggunakan jumlah karakter yang paling sedikit dan cepat dan kotor sekarang saya dapat =N(-A1). Tidak tahu itu ada juga.
glh
Apa tujuan tanda hubung di depan referensi sel? Dan mengapa Anda masing-masing memiliki jumlah tanda hubung yang berbeda?
youcantryreachingme

Jawaban:

30

Coba gandakan nilai sel dengan 1, lalu jalankan IsNumberdan Trimfungsinya, misalnya ,:

=IsNumber(Trim(A1)*1)

David Zemens
sumber
2
+1 untuk kecepatan dan server yang bagus. Itu menyebalkan ketika hal-hal tepat di wajah Anda tetapi Anda tidak dapat melihatnya!
glh
1
Saya juga tahu bahwa Anda bahkan tidak perlu menggunakannya trim. Salam saya.
glh
2
@ Glh kadang hanya butuh satu set mata untuk melihat apa yang ada di depan kamu. :)
David Zemens
5

Dengan asumsi nilai yang ingin Anda konversi ada di A1 Anda dapat menggunakan rumus berikut:

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

Di sini fungsi bersih dan rapi menghapus spasi dan tidak ada karakter yang dapat dicetak. Nilai fungsi mengkonversi string ke angka, dan dengan string yang dikonversi kita dapat memeriksa apakah nilainya adalah angka.

Sam Plus Plus
sumber
3
+1. Sebagai yang cepat dan kotor saya suka =VALUE(A1)karena data saya tidak membutuhkannya CLEAN(). Saya tidak tahu VALUE()fungsi itu ada. Hanya untuk mencatat TRIM()tidak melakukan apa-apa karena ruang diabaikan.
glh
3

The terpendek jawaban yang saya punya pertanyaan saya adalah:

=N(-A1)

Terima kasih, brettdj

glh
sumber
2

Saya tahu posting ini sudah lama tetapi saya menemukan ini sangat berguna dalam kasus ini saya memiliki formula yang mengembalikan (333), meskipun itu adalah angka dan ISNUMBER akan mengatakan itu adalah angka walaupun saya tidak ingin jawaban jika punya karakter selain digit. Berikut ini bekerja untuk saya.

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

Ini berfungsi jika ada karakter APA SAJA selain digit. Jika Anda hanya ingin drop salah benar IF

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

Seperti yang dikatakan David Zemens

=IsNumber(Trim(A1)*1)

Bekerja tetapi jika ada "-" atau nomor dalam tanda kurung itu akan mengatakan itu adalah angka.

Saya harap ini membantu Anda atau orang lain.

Mulut
sumber
0

jika ada yang perlu memfilter sel yang mengandung sesuatu yang tidak numerik:

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

hasil desimal dan negatif FALSE

robotik
sumber