在分页符之间垂直合并相同的单元格
我想在已设置的分页符之间(即防止合并分页符)在列A中的Excel中垂直合并单元格。如果两个或多个相邻单元格相同(下面显示的代码),我有代码告诉页面中断所在的行,以及代码来合并范围列A中的单元格,现在我试图弄清楚如何组合两个代码片段(下面显示的代码)仅合并完整页面上的相同单元格,而不是跨越已设置的分页符。任何人都可以想出解决方案吗?提前谢谢了。在分页符之间垂直合并相同的单元格
代码找到现有分页符的行号:
Sub PageBreakAddresses() 'this finds row of pagebreak
Dim pb As HPageBreak
For Each pb In Sheet1.HPageBreaks
MsgBox pb.Location.row - 1
Next
End Sub
代码在列A合并相同的细胞:
Sub MergeCells() ' this merges identical cells in column A
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim rngMerge As Range, cell As Range
Dim i As Long
i = Cells(Rows.Count, "A").End(xlUp).row
Set rngMerge = Range("A1:A" & i)
MergeAgain:
For Each cell In rngMerge
If cell.Value = cell.Offset(1, 0).Value And IsEmpty(cell) = False Then
Range(cell, cell.Offset(1, 0)).Merge
GoTo MergeAgain
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
合并细胞后,执行该代码。
Sub ResetHPage()
Dim WS As Worksheet
Dim rng As Range, rngST As Range, rngEnd As Range
Dim vHrow()
Dim C As Integer, n As Long, k As Long, i As Long
Dim mergeValue
ActiveWindow.View = xlPageBreakPreview
Set WS = ActiveSheet
C = WS.Cells.SpecialCells(xlCellTypeLastCell).Column
n = WS.HPageBreaks.Count
For i = 1 To n
k = k + 1
ReDim Preserve vHrow(1 To k)
vHrow(k) = WS.HPageBreaks(k).Location.Row
Next i
For i = 1 To n
For Each rng In Range("a" & vHrow(i), Cells(vHrow(i), C))
If rng.MergeCells Then
With rng.MergeArea
If rng.Address = .Range("a1").Address Then
Else
mergeValue = .Range("a1")
Set rngST = .Range("a1")
Set rngEnd = rng.MergeArea(.Rows.Count)
.UnMerge
rng = mergeValue
Range(rngST, rng.Offset(-1, 0)).Merge
Range(rng, rngEnd).Merge
End If
End With
End If
Next rng
Next i
WS.UsedRange.Borders.LineStyle = xlContinuous
End Sub
感谢代码Dy Lee。我对你到目前为止提供的代码做了一个小测试,它似乎做了我想做的事情!我没有注意到倒数第二行'WS.UsedRange.Borders.LineStyle = xlContinuous',因为我不需要绘制边框线。我需要在接下来的几天对我的完整报告进行更深入的测试,看看它在整体上的表现如何。但到目前为止,非常好!谢谢!。如果你有时间,你能否请你记下你的代码,以便我能更好地理解它在做什么,以及它在做什么?我想修改它有点中心合并txt。 – XLmatters
Colums(1).horizontalalignment = xlcenter –
感谢您为Colums(1).horizontalalignment = xlcenter'提示。我希望有更多的时间明天进一步测试和研究你的代码。到目前为止,它的外观和工作很棒!谢谢! – XLmatters
运行代码MergeCells后,运行mycode。 –