Déterminer le nombre de lignes dans une plage [fermé]
Question
Je connais le nom de la plage du début de la liste - 1
en largeur de colonne et x
en profondeur.
Comment calculer <=>?
Il y a plus de données dans la colonne que juste cette liste. Cependant, cette liste est contiguë: il n’ya rien dans les cellules situées au-dessus ou en dessous, ni sur les côtés à côté.
La solution
Function ListRowCount(ByVal FirstCellName as String) as Long
With thisworkbook.Names(FirstCellName).RefersToRange
If isempty(.Offset(1,0).value) Then
ListRowCount = 1
Else
ListRowCount = .End(xlDown).row - .row + 1
End If
End With
End Function
Mais si vous êtes vraiment sûr qu'il n'y a rien dans la liste, alors thisworkbook.Names(FirstCellName).RefersToRange.CurrentRegion.rows.count
Autres conseils
Sheet1.Range("myrange").Rows.Count
Pourquoi ne pas utiliser une formule Excel pour déterminer les lignes? Par exemple, si vous recherchez le nombre de cellules contenant des données dans la colonne A, utilisez ceci:
= COUNTIFS (A: A, & "; < > &";))
Vous pouvez remplacer < > avec n'importe quelle valeur pour obtenir combien de lignes ont cette valeur.
= COUNTIFS (A: A, & "2008 &";)
Ceci peut également être utilisé pour rechercher des cellules remplies dans une ligne.
Vous pouvez également utiliser:
Range( RangeName ).end(xlDown).row
pour trouver la dernière ligne contenant des données en commençant par votre plage nommée.
Je suis sûr que vous souhaitiez probablement la réponse donnée par @GSerg. Il existe également une fonction de feuille de calcul appelée rows
qui vous donnera le nombre de lignes.
Ainsi, si vous avez une plage de données nommée appelée Data
qui comporte 7 lignes, =ROWS(Data)
en affichera 7 dans cette cellule.
Cette dernière ligne a parfaitement fonctionné @GSerg.
L'autre fonction était celle sur laquelle je travaillais, mais je n'aime pas avoir à utiliser des fonctions UDF sauf en cas d'absolue nécessité.
J'avais essayé de combiner excel et vba et je l'avais fait fonctionner - mais c'est maladroit comparé à votre réponse.
strArea = Sheets("Oper St Report CC").Range("cc_rev").CurrentRegion.Address
cc_rev_rows = "=ROWS(" & strArea & ")"
Range("cc_rev_count").Formula = cc_rev_rows