我正在编写Excel VBA
宏,其中一项任务是将数据的子集从工作表复制到另一个。
我目前使用下面的内容,它将整行精确复制(C是行索引):
Dim ConsolidatedRow As Excel.Range
Set ConsolidatedRow = ConsolidatedSheet.Range("A" & C).EntireRow
...
ConsolidatedRow.Copy Destination:=ResultSheet.Range("A" & ResultRowIndex)
我想复制ConsolidatedRow
,但没有最后一列。最后一列用于声明和复制之间的其他操作,因此理想的解决方案是更改复制语句。我尝试过补偿,更新了ConsolidatedRow
中的范围以及其他所有内容,但没有运气。
答案 0 :(得分:2)
我更喜欢使用Range.End属性来定位最后使用过的单元格。如果您的行没有延伸到工作表中的其他行,则可以帮助您解决问题。将Set ConsolidatedRow命令替换为以下内容:
With ConsolidatedSheet
CopyExtent = .Range("A" & C).End(xlToRight).Column - 1
Set ConsolidatedRow = .Range(.Cells(C, 1), .Cells(C, CopyExtent))
End With
这假设您的数据没有间隙。如果要在复制的部分中包含空白单元格,请更改为:
CopyExtent = ConsolidatedSheet.Cells(C, .Columns.Count).End(xlToLeft).Column - 1
希望这有帮助!
答案 1 :(得分:1)
假设您在此工作表中未使用此consolidatedRow后面的列,请在设置后添加两行
Set ConsolidatedRow = Intersect(ConsolidatedSheet.UsedRange, ConsolidatedRow)
Set ConsolidatedRow = ConsolidatedRow.Resize(1, ConsolidatedRow.Columns.Count - 1)