2013-12-18 5 views
0

я пытаюсь получить Rows.Count диапазона, который состоит из двух объединенных диапазонов:Некорректное Rows.Count в прерванного диапазоне (Excel VBA)

Set rng = Union(Range1,Range2)

К сожалению rng.Rows. Count возвращает Rows.Count Range1, и я ожидаю, что он вернет Rows.Count Range1 + Range2.

Фактический диапазон Я тестировал его заключается в следующем: $A$27:$G$41,$A$43:$G$43

Его Rows.Count свойство возвращает 15, но в этом диапазоне есть 16 строк.

Любые идеи о том, как получить правильные строки. Без большого количества жонглирования?

+1

Следующие два решения будут работать при условии, что ваши диапазоны не имеют перекрытия. – sam092

+0

@ sam092: Да, это проблема. Однако, если есть совпадения, может быть достаточно сравнения «Rows.Count» каждой области и возврата максимального значения *. ;) – Manhattan

+0

@ BK201 не обязательно. Попробуйте 'Range (« A1: C8 »)' и 'Range (« A2: B9 »)' – sam092

ответ

2

Попробуйте

Dim arr as range 
Dim rws as long 

For each arr in rng.areas 
    Rws = rws + arr.rows.count 
Next 
+0

+1: Гораздо проще, чем моя грязная попытка. :) – Manhattan

0

Попробуйте это:

Sub Test() 
    Dim rng As Range 
    Res = 0 
    Set rng1 = Range("A27:G41") 
    Set rng2 = Range("A43:G43") 
    Set rng = Union(rng1, rng2) 
    For Each area In rng.Areas 
     Res = Res + area.Rows.Count 
     Debug.Print Res 
    Next area 
End Sub 

Надеется, что это помогает.

+0

Спасибо. Я, хотя области могли сделать трюк. – jivko

Смежные вопросы