سؤال

أعرف اسم النطاق لبداية القائمة - 1 عمود واسع و x صفوف عميقة.

كيف أحسب x?

هناك بيانات في العمود أكثر من هذه القائمة فقط.ومع ذلك، فإن هذه القائمة متجاورة - فلا يوجد شيء في أي من الخلايا الموجودة أعلىها أو أسفلها أو بجانبها.

هل كانت مفيدة؟

المحلول

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

ولكن إذا كنت متأكدًا من عدم وجود أي شيء في القائمة، فما عليك إلا thisworkbook.Names(FirstCellName).RefersToRange.CurrentRegion.rows.count

نصائح أخرى

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

لماذا لا تستخدم صيغة Excel لتحديد الصفوف؟على سبيل المثال، إذا كنت تبحث عن عدد الخلايا التي تحتوي على بيانات في العمود A، استخدم هذا:

=COUNTIFS(A:A،"<>")

يمكنك استبدال <> بأي قيمة لمعرفة عدد الصفوف التي تحتوي على هذه القيمة.

=COUNTIFS(أ:أ،"2008")

يمكن استخدام هذا للعثور على الخلايا المملوءة في صف واحد أيضًا.

تستطيع ايضا استخذام:

Range( RangeName ).end(xlDown).row

للعثور على الصف الأخير الذي يحتوي على بيانات بدءًا من النطاق المحدد.

أنا متأكد من أنك ربما أردت الإجابة التي قدمها @GSerg.هناك أيضًا وظيفة ورقة عمل تسمى rows سيعطيك عدد الصفوف.

لذا، إذا كان لديك نطاق بيانات مسمى يسمى Data الذي يحتوي على 7 صفوف، ثم =ROWS(Data) سوف تظهر 7 في تلك الخلية.

هذا السطر الأخير يعمل بشكل مثاليGSerg.

الوظيفة الأخرى هي ما كنت أعمل عليه ولكني لا أحب الاضطرار إلى اللجوء إلى UDF ما لم يكن ذلك ضروريًا للغاية.

كنت أحاول الجمع بين برنامجي Excel وvba وتمكنت من تشغيل هذا - ولكنه صعب مقارنة بإجابتك.

strArea = Sheets("Oper St Report CC").Range("cc_rev").CurrentRegion.Address
cc_rev_rows = "=ROWS(" & strArea & ")"
Range("cc_rev_count").Formula = cc_rev_rows
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top