在第一列中选​​择合并呼叫的范围

我有一些工作正常的代码,但它不是select和粘贴最后一行数据。

列AL在每隔一行中都有一个值,例如行1,3,5(AL1:AL2,AL3:AL4,AL5:AL6是合并的单元格)。 其他列不合并,并在第1-6行有值)。 当我运行VBA代码时,行6没有被包含(所有其他数据被正确粘贴)。

我试图select单元格区域,然后偏移1行(试图拿起第6行),但似乎并没有工作。 我找不到解决scheme。

Dim lr As Long Dim drng As Range 'dest range Dim srng As Range 'source range Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets lr = ws.Range("A1").SpecialCells(xlCellTypeLastCell).Row Set srng = ws.Range("AL1:AP" & lr) Set drng = SumSh.Range("B" & Rows.Count).End(xlUp)(2) Set drng = drng.Resize(srng.Rows.Count, srng.Columns.Count) drng.Value = srng.Value Next ws 

将示例代码更正为ws.Range("AL1:AP" & lr)其运行没有发生或丢失任何行。 第一列中的目标单元格未合并,但所有行都在那里。

 Sub gettit() Dim lr As Long Dim drng As Range 'dest range Dim srng As Range 'source range Dim ws As Worksheet, SumSh As Worksheet Set SumSh = Worksheets("Sum") For Each ws In ActiveWorkbook.Worksheets With ws If .Name = "Sum" Then Exit For lr = .Range("A1").SpecialCells(xlCellTypeLastCell).Row Set srng = .Range("AL1:AP" & lr) Set drng = SumSh.Range("B" & Rows.Count).End(xlUp)(2) Set drng = drng.Resize(srng.Rows.Count, srng.Columns.Count) drng.Value = srng.Value End With Next ws End Sub 

我确实必须将目标工作表设置为未被声明和未指定的工作表。

我怀疑你的循环不拾取目标工作表的下一个空白 ,因为B列中的单元格不合并。 换句话说,它是用input数据覆盖最后一行,因为你要求列B中的下一个空白单元格,列B始终有一个空白单元格开始最后一行。

循环的最后一个迭代应该是正确的; 尽pipe在列B的最后一行有一个空白单元格。解决scheme:向下移动目标上的额外一行。