VBA Compter des Valeurs dans la gamme
J'ai lu le post sur ce VBA problème, mais mon script VBA ne fonctionne toujours pas.
Public Sub Test()
Dim arrNames As Variant 'Declare array named "arrNames"
arrNames = Sheet1.Range("F2:F1000") 'Array filled with column F
intN = Application.CountIf(arrNames, "*") 'does not work intent: count cells w/info
'intN = Application.CountA(arrNames) 'works but MsgBox displays value of 999
MsgBox (intN)
End Sub
Comment puis-je obtenir le nombre de cellules de mon tableau contenant une valeur quelconque?
Version modifiée d'après l'aide
Public Sub Test()
Dim arrNames As Variant 'Declare array named "arrNames"
Dim i As Long
arrNames = Sheet1.Range("F2:F1000") 'Array filled with column F
For i = LBound(arrNames) To UBound(arrNames)
If (arrNames(i,1) = "") Then
EmptyCounter = EmptyCounter + 1
End If
Next i
End Sub
- Vous n'avez pas déclaré
Dim EmptyCounter As Long
- Pouvez-vous ne pas utiliser l'approche la plus simple comme
MsgBox Application.WorksheetFunction.CountBlank(Range("F2:F1000"))
?? - a ma solution ci-dessous pour aider?
- Non et Oui. arrNames doit être changé sur la Ligne 9, après les Si la déclaration en tant que telle: Si arrNames(i,1) sinon une erreur indice hors de portée des résultats.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ceci:
100%, il fonctionne.
intN = arrNames.Cells.SpecialCells(xlCellTypeConstants).Count
- je suis en supposant que vous aviez déclaré arrNames comme avant. Cela vous aide?Dim TheLastRow As Long TheLastRow = Worksheets("Sheet1").Range("F2:F1000").Cells.SpecialCells(xlCellTypeLastCell).Row MsgBox (TheLastRow)
- que l'on trouve le dernier non-vide de ligne. ensuite, vous pouvez lancer le code que j'ai proposé dans ma première réponse.Il n'y a pas de moyen direct de le faire, comme je le comprends. Mais vous pouvez exécuter une simple boucle pour vérifier si les valeurs sont égales à "" en supposant que la chaîne de données.
Pour, par exemple,
Si c'est numérique ou autre type de données, vous pouvez essayer des variations de la au-dessus de boucle à l'aide de fonctions telles que
IsEmpty(VariableName)
etc.i
déclaré aussi Longtemps? ou Entier? Veuillez déclarer commeLong
et de voir de nouveau.