Je dois déterminer si le texte de mes cellules est une valeur numérique et que je souhaitais utiliser une méthode élégante non VBA qui n'entrave pas son état actuel ou valeur.
Ce que j’ai trouvé, c’est que la fonction ISNUMBER()
ne fonctionne que si les cellules ont un formatage numérique ou n’ont pas d’espace si le formatage du texte, par exemple:
Pour les trois premiers, j'ai utilisé =ISNUMBER(...)
et ma dernière tentative est =ISNUMBER(TRIM(...))
.
La seule méthode que j'ai utilisée qui n'utilise pas VBA est de remplacer mes valeurs actuelles par text to column puis d'utiliser la fonction =ISNUMBER()
.
Remarque: Je maîtrise bien VBA et Excel et je comprends que je pourrais créer une fonction définie par l'utilisateur. Mais je ne veux pas, car cela impose l'installation d'un classeur obligatoire ou d'un complément, ce que je peux et ai fait dans certains cas.
J'apprécierai tout conseil, toute pensée (même s’ils me disent que cela ne peut pas être fait) ou les solutions VBA (elles ne seront pas marquées comme une réponse cependant).
Essayez de multiplier la valeur de la cellule par 1, puis exécutez les fonctions IsNumber
et Trim
, par exemple:
=IsNumber(Trim(A1)*1)
En supposant que la valeur que vous voulez convertir se trouve en A1, vous pouvez utiliser la formule suivante:
=ISNUMBER(VALUE(TRIM(CLEAN(A1)))
Ici, les fonctions clean et trim suppriment les espaces et les caractères imprimables. La valeur de la fonction convertit une chaîne en un nombre et, avec la chaîne convertie, nous pouvons vérifier si la valeur est un nombre.
La réponse la plus courte à ma question est la suivante:
=N(-A1)
Merci brettdj
Je sais que ce message est ancien, mais j’ai trouvé cela très utile dans ce cas. J’avais une formule qui renvoyait (333), même s’il s’agissait d’un nombre et ISNUMBER dira que c’est un nombre même si je ne voulais pas de réponse s’il y avait lieu. caractères autres que des chiffres. Ce qui suit a fonctionné pour moi.
=IF(AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))),"Is Number","")
Cela fonctionne s'il n'y a AUCUN caractère autre que des chiffres. Si vous voulez juste un vrai faux laissez tomber le SI
=AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))
Comme David Zemens a déclaré
=IsNumber(Trim(A1)*1)
Fonctionne mais s'il y a un "-" ou si le nombre est entre parenthèses, il dira que c'est un nombre.
J'espère que cela vous aide ou aide les autres.
si quelqu'un a besoin de filtrer les cellules contenant tout ce qui n'est pas numérique:
=AND(SUMPRODUCT(--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))=LEN(A1),A1<>"")
décimales et négatives résultent FALSE