我在Excel中计算每个合并单元格块的行数时遇到问题。
我在A1上有一个值。如果我合并单元格A1到A4,则值显示在A1-A4范围内的中心。 然后我在A5中有另一个值。如果我将单元格A5合并到A12,则第二个值将显示在第二个单元格块的中心。
我想要的是计算每个合并单元格块的行数。
我尝试使用VBA编程来检测这些行数,使用函数“MergeArea”和“CurrentRegion.Count”但程序检测到这两个块是连续的并且计数12行,而不是4行,然后是8行。 如果它首先检测到“4”,我可以在循环上输入正确的指令然后检测“8”。
答案 0 :(得分:4)
在VBA方面合并单元格有几个缺点,但这是一个简单的尝试方法。
我的表格如下:
代码:
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
结果是两个消息框,如下所示:
答案 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