excel中如何用宏判断是否是合并单元格,以及合并的行数或列数?
如图所示,不知道从哪行到哪行是合并单元格,但是想通过宏来判断并组成合并字符串!请教高手帮忙啊。我这只是举个例子。里面的文字和格式不一定是这样。可能有很多合并的单元格。这个...
如图所示,不知道从哪行到哪行是合并单元格,但是想通过宏来判断并组成合并字符串!请教高手帮忙啊。
我这只是举个例子。里面的文字和格式不一定是这样。可能有很多合并的单元格。这个直接去看当然可以了,但是因为要做大量的这样的处理 所以想用宏。 展开
我这只是举个例子。里面的文字和格式不一定是这样。可能有很多合并的单元格。这个直接去看当然可以了,但是因为要做大量的这样的处理 所以想用宏。 展开
5个回答
展开全部
代码如下:
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
详细操作步骤如下:
展开全部
在C列输这个公式看看效果:
=IF(A1-A2=A1,LEFT(C1,2)&B2,A2&B2)
如果你真实环境下,A列和B列的字节数是固定的话,我建议可以试试。只要根据实际情况下A列的字节数调整left函数的参数就可以了。
有疑问的话,可以再问。
注:为了简化公式,这个函数从第二行开始有效。
=IF(A1-A2=A1,LEFT(C1,2)&B2,A2&B2)
如果你真实环境下,A列和B列的字节数是固定的话,我建议可以试试。只要根据实际情况下A列的字节数调整left函数的参数就可以了。
有疑问的话,可以再问。
注:为了简化公式,这个函数从第二行开始有效。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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列。
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列。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我有个其他的思路,你在C列输这个公式看看效果:
=IF(A1-A2=A1,LEFT(C1,2)&B2,A2&B2)
如果你真实环境下,A列和B列的字节数是固定的话,我建议可以试试。只要根据实际情况下A列的字节数调整left函数的参数就可以了。
有疑问的话,可以再问。
注:为了简化公式,这个函数从第二行开始有效。
=IF(A1-A2=A1,LEFT(C1,2)&B2,A2&B2)
如果你真实环境下,A列和B列的字节数是固定的话,我建议可以试试。只要根据实际情况下A列的字节数调整left函数的参数就可以了。
有疑问的话,可以再问。
注:为了简化公式,这个函数从第二行开始有效。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一看就知道A5到A7是合并单元格 还有C1到C7也是合并。 你认真看下 那些浅颜色格子不见了 就是合并了 看A 、B两行的格式 就知道C那一行业是合并的 。明白吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询