计算合并单元格的行数

时间:2014-03-04 23:16:53

标签: excel vba excel-vba

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

我的表格如下:

enter image description here

代码:

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

答案 1 :(得分:1)

Portland Runner建议的方法Range("A" & i).MergeArea.Rows.Count工作正常,但是该函数的逻辑稍微不正确,因为错过了Next也增加了i,因此写更正确:< / p>

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