Excel 如何使用VBA在动态数据不均匀时选择并复制到最后一个单元格

Excel 如何使用VBA在动态数据不均匀时选择并复制到最后一个单元格,excel,vba,select,dynamic,Excel,Vba,Select,Dynamic,请参见我的快照高亮显示区域需要选择,最后一个单元格有时为空,并且是动态的 从上述输入中,需要选择所有数据并复制它。 当我重复使用工作表时,数据范围可能会有所不同,此时标准公式无法正常工作 目前我使用这个VBA代码 input: 45311 0003ML00030-1 0003ML00030-2 0003ML00030-3 0003ML00030-1 0003ML00030-1 当我使用此代码时,它选择最末一个单元格行1048570 x第41列 但在本例中,最后一个

请参见我的快照高亮显示区域需要选择,最后一个单元格有时为空,并且是动态的

从上述输入中,需要选择所有数据并复制它。 当我重复使用工作表时,数据范围可能会有所不同,此时标准公式无法正常工作

目前我使用这个VBA代码

input:

45311       
0003ML00030-1   0003ML00030-2   0003ML00030-3
0003ML00030-1   0003ML00030-1 
当我使用此代码时,它选择最末一个单元格行1048570 x第41列

但在本例中,最后一个单元格是row4 x col7 像这样,我需要动态选择数据范围是否变化

以下是代码:

Sub Macro()
 Sheets("input").Select
Range("D2").Select
   Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
   Selection.Copy
End Sub
通常,要检查最后一个单元格的行号,可以使用

Sub Macro()
Sheets("input").Activate
Range("b1").CurrentRegion.Copy

End Sub
Cells(Rows.Count, "B").End(xlUp).Row
要检查最后一个单元格的列号,可以使用

Sub Macro()
Sheets("input").Activate
Range("b1").CurrentRegion.Copy

End Sub
Cells(Rows.Count, "B").End(xlUp).Row
这是修改后的代码和图片的演示。
请看,但此标记的答案-仅显示最后一行的相关详细信息。不管怎样,谢谢你的评论,你可以应用类似的逻辑来查找最后一列抱歉,我不知道,今天已经尝试了很多次,不起作用。它是从主单元格A1选择的,但我的源数据从D2开始。我将使用范围D2:F&r.Copy,并让r=CellsRows.Count,D.EndxlUp.Row,假设您的数据区域以F列结尾,最好给出屏幕的图片。但F列不是固定的。它的dynamiclast列Cells2,Columns.Count.EndxlToLeft.column您应该将其更改为“rng.Offset1,3.Resizerng.Rows.Count-1,rng.Columns.Count-3.Copy”。最好在开始时粘贴屏幕截图,它将显示您的数据结构。