Controlla se il testo della cella di Excel è numerico usando solo la formula


13

Devo scoprire se il testo delle mie celle è un valore numerico e volevo usare un metodo elegante non VBA che non impedisce il suo stato o valore attuale.

Quello che ho scoperto è che la ISNUMBER()funzione funziona solo se le celle stanno formattando il numero o non ha spazi se la formattazione del testo, ad esempio:

numero come esempi di testo

Per i primi tre che ho usato =ISNUMBER(...)e il mio ultimo tentativo è =ISNUMBER(TRIM(...)).

L'unico metodo che ho usato che non usa VBA è quello di sovrascrivere i miei valori attuali usando il testo in colonne e quindi usare la =ISNUMBER()funzione.

Nota: sono esperto di VBA ed Excel e capisco che potrei creare una funzione definita dall'utente. Ma non voglio poiché questo impone una cartella di lavoro macro richiesta o un componente aggiuntivo da installare, cosa che posso e ho fatto in alcuni casi.

Apprezzerò qualsiasi consiglio, pensiero (anche se mi dicono che non può essere fatto) o soluzioni VBA (non sarà comunque contrassegnato come risposta).


4
FWIW è un'alternativa a ISNUMBERquella usata raramente N. Qualcosa del genere=NOT(ISERR(N(--A1)))
brettdj

1
@brettdj grazie per quello! Per una risposta che utilizza il minor numero di caratteri ed è veloce e sporca che ho ora =N(-A1). Non sapevo nemmeno che esistesse.
glh

Qual è lo scopo del trattino / i davanti al riferimento di cella? E perché ognuno di voi ha un numero diverso di trattini?
youcantryreachingme,

Risposte:


30

Prova a moltiplicare il valore della cella per 1, quindi esegui le funzioni IsNumbere Trim, ad esempio:

=IsNumber(Trim(A1)*1)


2
+1 per la velocità e una buona risposta. Fa schifo quando le cose sono giuste in faccia ma non le vedi!
glh

1
Inoltre ho scoperto che non hai nemmeno bisogno di usare trim. I miei saluti.
glh

2
@glh a volte basta solo un altro paio di occhi per vedere cosa c'è di fronte a te. :)
David Zemens,

5

Supponendo che il valore che si desidera convertire sia in A1, è possibile utilizzare la seguente formula:

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

Qui le funzioni clean e trim rimuovono gli spazi bianchi e nessuno dei caratteri stampabili. Il valore della funzione converte una stringa in un numero e con la stringa convertita possiamo verificare se il valore è un numero.


3
+1. Come veloce e sporco mi piace =VALUE(A1)come i miei dati non avranno bisogno di CLEAN(). Non sapevo che VALUE()esistesse la funzione. Solo per notare TRIM()che non fa nulla poiché gli spazi vengono comunque ignorati.
glh

3

La risposta più breve alla mia domanda è:

=N(-A1)

Grazie Brettdj


2

So che questo post è vecchio ma l'ho trovato molto utile in questo caso ho avuto una formula che ha restituito (333), anche se è un numero e ISNUMBER dirà che è un numero anche se non volevo una risposta se avesse caratteri diversi dalle cifre. Quanto segue ha funzionato per me.

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

Funziona se ci sono QUALSIASI carattere diverso dalle cifre. Se vuoi solo un vero falso, rilascia l'IF

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

Come ha affermato David Zemens

=IsNumber(Trim(A1)*1)

Funziona ma se c'è un "-" o il numero è tra parentesi, dirà che è un numero.

Spero che questo aiuti te o gli altri.


0

se qualcuno ha bisogno di filtrare le celle che contengono qualcosa che non è numerico:

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

risultato decimali e negativi FALSE

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.