2008-09-22 6 views
16

Je connais le nom de plage du début d'une liste - 1 colonne large et x lignes profondes.Déterminer le nombre de lignes dans une plage

Comment calculer x?

Il y a plus de données dans la colonne que juste cette liste. Cependant, cette liste est contiguë - il n'y a rien dans l'une des cellules au-dessus ou au-dessous ou de chaque côté à côté de lui.

+1

Pourriez-vous fournir un exemple d'entrée et un exemple de ce que vous voulez? –

Répondre

12
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 sacrément sûr qu'il n'y a rien dans la liste, puis juste thisworkbook.Names(FirstCellName).RefersToRange.CurrentRegion.rows.count

2

Je suis sûr que vous vouliez sans doute la réponse que @GSerg a donné. 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, =ROWS(Data) affichera 7 dans cette cellule.

+0

salut wcm merci - La réponse de GSerg est celle que je voulais. Le problème que j'avais avec la formule ROWS était que je ne connaissais pas l'adresse de la plage et je ne pouvais pas utiliser une plage de décalage dynamique en utilisant counta car il y avait plus de données dans la colonne – SpyJournal

1

Cette seule dernière ligne fonctionnait parfaitement @GSerg.

L'autre fonction était ce sur quoi je travaillais mais je n'aime pas avoir recours à UDF sauf si absolument nécessaire.

J'avais essayé une combinaison d'excel et de vba et avais eu ceci pour 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 
5

Vous pouvez également utiliser:

Range(RangeName).end(xlDown).row 

pour trouver la dernière ligne comportant des données à partir de votre plage nommée.

47
Sheet1.Range("myrange").Rows.Count 
8

Pourquoi ne pas utiliser une formule Excel pour déterminer les lignes? Par exemple, si vous cherchez combien de cellules contiennent des données dans la colonne A utiliser ceci:

= NB.SI.ENS (A: A, « <> »)

Vous pouvez remplacer <> avec une valeur pour obtenir comment De nombreuses lignes ont cette valeur.

= NB.SI.ENS (A: A, "2008")

Ceci peut être utilisé pour trouver des cellules remplies dans une rangée aussi.