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

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top