web-dev-qa-db-fra.com

Déterminer le nombre de lignes dans une plage

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é.

17
SpyJournal
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

11
GSerg
Sheet1.Range("myrange").Rows.Count
56
orwell

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.

8
user1371038

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.

5
Jon Fournier

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.

3
wcm

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
1
SpyJournal