Je connais le nom de plage du début d'une liste - 1
largeur de colonne et x
lignes de profondeur.
Comment calculer x
?
Il y a plus de données dans la colonne que cette liste. Cependant, cette liste est contiguë - il n'y a rien dans les cellules au-dessus ou en dessous ou de chaque côté à côté.
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 autour de la liste, alors juste thisworkbook.Names(FirstCellName).RefersToRange.CurrentRegion.rows.count
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 <> par n'importe quelle valeur pour obtenir le nombre de lignes contenant cette valeur.
= COUNTIFS (A: A, "2008")
Cela peut également être utilisé pour rechercher des cellules remplies dans une rangée.
Vous pouvez aussi utiliser:
Range( RangeName ).end(xlDown).row
pour trouver la dernière ligne contenant des données à partir de votre plage nommée.
Je suis sûr que vous vouliez 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.
Donc, si vous avez une plage de données nommée Data
qui a 7 lignes, alors =ROWS(Data)
affichera 7 dans cette cellule.
Cette dernière ligne a parfaitement fonctionné @GSerg.
L'autre fonction était ce sur quoi je travaillais, mais je n'aime pas avoir à recourir aux UDF à moins que cela ne soit absolument nécessaire.
J'avais essayé une combinaison d'Excel et de vba et je l'avais fait fonctionner - mais c'est maladroit par rapport à 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