关于vba:为合并的单元格计算行

Count rows for merged cells

我在统计Excel中合并单元格的每个块的行数时遇到问题。

我对A1有价值。 如果我合并单元格A1到A4,则该值将居中显示在范围A1-A4上。
然后我在A5中还有另一个值。 如果我将单元格A5合并到A12,则此第二个值将以该单元格的第二个块为中心。

我要计算的是合并单元格每个块的行数。

我尝试使用VBA编程通过函数" MergeArea"和" CurrentRegion.Count"来检测这些行数,但是该程序检测到两个块是连续的并计数12行,而不是4行,然后是8行。
如果它首先检测到" 4",则可以将正确的指令放在循环中,然后检测到" 8"。


在VBA方面,合并单元有几个缺点,但这是一种简单的尝试方法。

我的工作表如下所示:

enter image description here

码:

1
2
3
4
5
6
7
8
9
10
Sub CountMergedRows()
    For i = 1 To 20
        RowCount = Range("A" & i).MergeArea.Rows.Count

        If RowCount > 1 Then
            MsgBox ("Cell [A" & i &"] has" & RowCount &" merged rows")
            i = i + RowCount
        End If
    Next i
End Sub

结果是两个消息框,如下所示:

enter image description here

enter image description here


Portland Runner建议的方法Range("A" & i).MergeArea.Rows.Count可以正常工作,但是该函数的逻辑略有不正确,因为会错过Next也会递增i的情况,因此编写起来更正确:

1
2
3
4
5
6
7
8
9
10
11
Sub CountMergedRows()
    For i = 1 To 20
        RowCount = Range("A" & i).MergeArea.Rows.Count

        If RowCount > 1 Then
            MsgBox ("Cell [A" & i &"] has" & RowCount &" merged rows")
            i = i + RowCount - 1 'note -1 here
        End If

    Next i
End Sub