Excel hücresi metninin yalnızca formül kullanarak sayısal olup olmadığını kontrol edin


13

Hücrelerimin metninin sayısal bir değer olup olmadığını ve şu anki durumunu veya değerini engellemeyen zarif bir VBA olmayan yöntem kullanmak isteyip istemediğini öğrenmek zorundayım .

Bulduğum şey, ISNUMBER()işlevin yalnızca hücrelerin sayı biçimlendirmesi veya metin biçimlendirmesi durumunda boşluk içermemesi durumunda çalışmasıdır:

metin örnekleri olarak sayı

İlk üçü için kullandım =ISNUMBER(...)ve son denemem =ISNUMBER(TRIM(...)).

VBA kullanmayan tek yöntem, geçerli değerleri sütunlara metin kullanarak geçersiz kılmak ve sonra =ISNUMBER()işlevi kullanmaktır .

Not: VBA ve Excel konusunda uzmanım ve kullanıcı tanımlı bir işlev oluşturabileceğimi anlıyorum. Ancak bu, bazı durumlarda yapabileceğim ve yapabileceğim bir makro gerekli çalışma kitabı veya bir eklenti yüklenmesini gerektirdiğinden istemiyorum.

Herhangi bir tavsiye, düşünce (bana bunun yapılamayacağını söyleseler bile) veya VBA çözümlerini (ancak cevap olarak işaretlenmeyecek) takdir edeceğim.


4
FWIW ISNUMBERnadiren kullanılan bir alternatiftir N. Böyle bir şey=NOT(ISERR(N(--A1)))
brettdj

1
@brettdj bunun için teşekkürler! En az sayıda karakter kullanan ve hızlı ve kirli bir cevap için şimdi aldım =N(-A1). Bunun da var olduğunu bilmiyordum.
glh

Hücre başvurusunun önündeki tire (ler) in amacı nedir? Ve neden her birinizin farklı sayıda teriği var?
youcantryreachingme

Yanıtlar:


30

Hücre değerini 1 ile çarpmayı ve ardından IsNumberve Trimişlevlerini çalıştırmayı deneyin , örn .:

=IsNumber(Trim(A1)*1)


2
Hız ve iyi bir anwser için +1. Her şey yüzünüzde olduğunda berbat ama onları göremiyorsunuz!
glh

1
Ayrıca kullanmaya bile gerek olmadığını öğrendim trim. Saygılarımla.
glh

2
@glh bazen önünüzde neyin doğru olduğunu görmek başka bir göze ihtiyaç duyar. :)
David Zemens

5

Dönüştürmek istediğiniz değerin A1'de olduğunu varsayarsak, aşağıdaki formülü kullanabilirsiniz:

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

Burada temiz ve kırpma işlevleri boşlukları kaldırır ve yazdırılamaz karakterleri kaldırır. İşlev değeri, bir dizeyi sayıya dönüştürür ve dönüştürülen dize ile değerin bir sayı olup olmadığını kontrol edebiliriz.


3
+1. =VALUE(A1)Verilerime ihtiyaç duymayacağı için hızlı ve kirli olarak seviyorum CLEAN(). VALUE()İşlevin var olduğunu bilmiyordum . Sadece TRIM()boşluklar göz ardı gibi hiçbir şey yok not etmek .
glh

3

En kısa Sorumun var cevabı:

=N(-A1)

Teşekkürler brettdj


2

Bu yazının eski olduğunu biliyorum ama bu durumda bu çok yararlı buldum (333), bir sayı olmasına rağmen dönen bir formül vardı ve ISNUMBER bir sayı olduğunu söylese bile bir cevap istemiyordum rakamlar dışında karakterler. Aşağıdakiler benim için çalıştı.

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

Rakam dışında HERHANGİ bir karakter varsa çalışır. Sadece gerçek bir yanlış damla IF istiyorsanız

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

David Zemens'in belirttiği gibi

=IsNumber(Trim(A1)*1)

Çalışır, ancak "-" varsa veya sayı parantez içindeyse, bunun bir sayı olduğunu söyler.

Umarım bu size veya başkalarına yardımcı olur.


0

herhangi birinin sayısal olmayan bir şey içeren hücreleri filtrelemesi gerekiyorsa:

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

ondalık sayılar ve negatifler FALSE

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.