复制VBA中除最后一列之外的行

我正在编写一个Excel VBAmacros,其中一个任务是将数据的一个子集从一个表复制到另一个。

我目前使用下面,哪个复制整行罚款(C是行索引):

 Dim ConsolidatedRow As Excel.Range Set ConsolidatedRow = ConsolidatedSheet.Range("A" & C).EntireRow ... ConsolidatedRow.Copy Destination:=ResultSheet.Range("A" & ResultRowIndex) 

我想复制ConsolidatedRow ,但没有最后一列。 最后一列在声明和复制之间的其他操作中使用,所以理想的解决scheme是更改复制语句。 我已经尝试了偏移量,更新了ConsolidatedRow的范围和其他东西的负载,但没有运气。

我更喜欢使用Range.End属性来定位最后使用的单元格。 如果你的行没有延伸到你的工作表中的其他位置,可以帮助你。 将Set ConsolidatedRow命令replace为以下内容:

 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 

希望这可以帮助!

假设您在此工作表中不使用这个consolidatedRow后面的列,请在设置后添加两行

 Set ConsolidatedRow = Intersect(ConsolidatedSheet.UsedRange, ConsolidatedRow) Set ConsolidatedRow = ConsolidatedRow.Resize(1, ConsolidatedRow.Columns.Count - 1)