Excel中的范围从特定的单元格移动到列的末尾
我想知道如何定义一个范围,以便从C5
定义,直到列的最后一个值。 C5
是一个常数,但列表的结尾不是。
Sub Merge() Worksheets("Sub").Range("C5").End(xlToLeft).Select.copy Worksheets("Master Worksheet").Range("A1:A23").PasteSpecial Paste:=xlPasteValues
结束小组
我得到一个下标超出范围的错误。 任何指导将是非常好的。
您不必复制和粘贴特殊的值。 直接传输值,避免使用剪贴板。
这可能会使用一个或两个variables来清理代码。
With Worksheets("Sub") Worksheets("Master Worksheet").Range("A1") _ .Resize(.Range(.Cells(5, 3), .Cells(5, Columns.Count).End(xlToLeft)).Columns.Count, 1) = _ Application.Transpose(.Range(.Cells(5, 3), .Cells(5, Columns.Count).End(xlToLeft)).Value) End With
- 代码有点长,因为我们需要调整目标的大小,以便接收值。 如上所述,一个或多个增值业务将整理清理。
- 创build
Range(Cells, Cells.End)
types的单元格区域引用时,请确保Range对象内的Range.Cells属性知道它们的Range .Parent属性是什么。 在这种情况下,我使用了With … End With语句,并使用句点(又名句号 )作为前缀.Cells
,以便他们知道它们属于Worksheets("Sub")
。 - 使用
Application.Transpose
将值的列翻转成行。
你可以这样做: Worksheets("Sub").Range(Cells(5,3),Cells(5,Cells(5,3).End(xltoLeft).column)).Select
这将从单元格C5(又名单元格(5,3))开始,然后向左。
编辑:正如Jeeped指出的那样,可能会更好:
With Worksheets("Sub") .Range(.Cells(5,3),.Cells(5,.Cells(5,3).End(xlToLeft).Column)).Select End With