Boucle à travers la plage de cellules pour vérifier si c'est un nombre (un nombre)
Je suis à la recherche d'un moyen pour faire une boucle dans une plage de cellules et de vérifier si la cellule est un nombre ou non. Je suis conscient que les dates sont en fait des nombres et je vais être à la recherche pour le nombre de dates. Donc, disons que je veux vérifier le range ("A2:A10") et si la cellule est un nombre, ajouter 1 à mon datecount variable. Le ISNUMBER() la fonction semble être la seule à être utile si vous êtes à la recherche pour un nombre précis. Mais je suis à la recherche pour n'importe quel nombre.
Sub Main()
Dim Datecount As Integer
Datecount = 0
Range("A2").Select
For Each c In Range("2:2")
If c.Value.IsNumber() Then
Datecount = Datecount + 1
Next
End Sub
Ci-dessus est la chose la plus importante j'ai besoin d'aide. Si vous pouvez l'aider avec ça, super! Si vous pouvez aider avec cette partie suivante, qui serait magnifique. En gros, je voudrais vérifier si la cellule est un nombre comme ci-dessus. Mais cette fois, si il n'est pas un nombre, je le veux pour sortir de la boucle.
Dim Datecount As Integer
Datecount = 0
Range("A2").Select
For Each c In Range("2:2")
If c.Value.IsNumber() Then
Datecount = Datecount + 1
ElseIf
Exit For
End If
Next
End Sub
- Il n'y a pas de question dans ton post. Quel est exactement votre question?
- Si vous souhaitez faire une boucle à travers la gamme "A2:A10", en sélectionnant "A2" n'est pas de faire quelque chose pour vous. Range ("2:2") signifie que vous êtes en boucle à travers chaque cellule de la rangée 2. Vous ne voulez pas le faire.
- Pour la première partie, vous pouvez essayer
Datecount= range("2:2").SpecialCells(xlCellTypeConstants,xlnumbers).Count
. Si aucun numéro n'existe dans cette gamme, le ci-dessus renvoie une erreur il doit donc être pris au piège. Pour la deuxième partie, pour éviter le bouclage, nous avons besoin d'identifier le premier non-numérique de la cellule (l'appeleraCell
) et retouraCell.column-1
(ou0
). Une idée est de vérifier la première cellule de tous lesSpecialCells
autres que xlNumbers et retour le minimum de la colonne parmi ces premières cellules. Pas très élégant..
Vous devez vous connecter pour publier un commentaire.
À résoudre votre premier problème, vous n'avez pas besoin de boucle à tous. Un simple Nb.si formule va vous donner ce que vous cherchez:
Je pense cela va faire ce que vous êtes après pour ta deuxième question:
test2() renvoie 0 si il n'y a pas de TEXTE dans la plage que vous êtes à la vérification (ce qui signifie qu'ils sont tous numériques des cellules). Permettez-moi de savoir si c'est un problème et je vais pirater mon chemin autour d'elle...
Essayer:
Maintenant, je ne suis pas sûr de ce que tu veux dire avec le
IsNumber()
fonction. Je n'ai jamais entendu parler de ça. Et dans tous les cas, vous n'avez pas l'application d'une fonction à la fin d'un objet:c.Value.IsNumeric()
wil vous donner un message d'erreur (objet ne gère pas cette propriété ou méthode, probablement, je ne l'ai pas testé)À la place:
IsNumeric(c.Value)
, parce quec.Value
est l'argument que vous êtes de passage à laIsNumeric
fonction.essayez ceci:
gamme peut être estended
Range("b2").Sélectionnez
i = 0