excel中如何用宏判断是否是合并单元格,以及合并的行数或列数?

如图所示,不知道从哪行到哪行是合并单元格,但是想通过宏来判断并组成合并字符串!请教高手帮忙啊。
我这只是举个例子。里面的文字和格式不一定是这样。可能有很多合并的单元格。这个直接去看当然可以了,但是因为要做大量的这样的处理 所以想用宏。

代码如下:

Sub main()

For i = 1 To Range("A1").End(xlDown).Row'取A列最大行数,并从1到最大行数循环

If Range("A" & i).MergeCells = True Then'如果单元格为合并单元格

For j = 1 To Range("A" & i).MergeArea.Count'从1到合并单元格的数量循环

Cells(i + j - 1, 3) = Cells(i, 1) & Cells(i + j - 1, 2)'第三列等于第一列第一行合并上第二列对应各行

Next j

Else'如果不是合并单元格

Cells(i, 3) = Cells(i, 1) & Cells(i, 2)'第三列等于第一列合并第二列

End If

Next i

End Sub



详细操作步骤如下:

    数据源

    Alt+F11,双击Sheet1,在空白VBA设计区域,复制上述代码,并点击运行,或者按F5

    运行结果如下:


温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-26
在C列输这个公式看看效果:
=IF(A1-A2=A1,LEFT(C1,2)&B2,A2&B2)

如果你真实环境下,A列和B列的字节数是固定的话,我建议可以试试。只要根据实际情况下A列的字节数调整left函数的参数就可以了。
有疑问的话,可以再问。

注:为了简化公式,这个函数从第二行开始有效。
第2个回答  2010-12-29
Sub test()
Application.DisplayAlerts = False
Dim i As Long
Dim j As Integer
Dim bstring As String
Dim cstring As String
Dim mergecount As Integer
With Worksheets("sheet1")
For i = 1 To .Range("A65536").End(xlUp).Row
If .Cells(i, 1).MergeCells = True Then
mergecount = .Cells(i, 1).MergeArea.Rows.Count
For j = 0 To mergecount - 1
bstring = bstring + CStr(.Cells(i + j, 2))
cstring = cstring + CStr(.Cells(i + j, 3))
Next
.Range(.Cells(i, 2), .Cells(i + j, 2)).MergeCells = True
.Cells(i, 2) = bstring
.Range(.Cells(i, 3), .Cells(i + j, 3)).MergeCells = True
.Cells(i, 3) = cstring
End If
Next
End With
Application.DisplayAlerts = True
End Sub
========================
以上VBA代码供你参考,假设对应 SHEET1 工作表,假设根据A列判断,然后合并对应的B列和C列。
第3个回答  2010-12-29
我有个其他的思路,你在C列输这个公式看看效果:
=IF(A1-A2=A1,LEFT(C1,2)&B2,A2&B2)

如果你真实环境下,A列和B列的字节数是固定的话,我建议可以试试。只要根据实际情况下A列的字节数调整left函数的参数就可以了。
有疑问的话,可以再问。

注:为了简化公式,这个函数从第二行开始有效。本回答被提问者采纳
第4个回答  2010-12-29
一看就知道A5到A7是合并单元格 还有C1到C7也是合并。 你认真看下 那些浅颜色格子不见了 就是合并了 看A 、B两行的格式 就知道C那一行业是合并的 。明白吗?本回答被网友采纳
相似回答