1 variables excel vba excel-vba
我有一个问题,我一直试图找到答案很长一段时间.我有许多客户的电子表格,我运行宏,我是编码的新手,并且能够找出我需要做的事情.我的客户每月向我们发送数据,每个月的行数会发生变化.列不会更改,但数据量会发生变化.我之前的宏我刚刚选择了整个列来复制并粘贴到我们的公司模板上.这对于必须的东西工作正常但是已经创建了一些非常长的代码和宏需要很长时间.我想编写一个代码来计算某一列中有多少行,然后从那里复制和粘贴,但是每列中计算的行数都很多.只有少数几列包含每一行中的数据,因此我需要它来计算一个特定列中的行并应用于每一列.任何帮助,将不胜感激.谢谢托尼
嗨,大家好,还有这方面的问题,下面我贴了我正在使用的代码,如果有人可以看到为什么它不会运行请帮助.
Windows("mmuworking2.xlsx").Activate
Workbooks.Open Filename:= _
"C:\Users\I53014\Desktop\QC DOCS\Sample_Data_Import_Template.xlsx"
Windows("mmuworking2.xlsx").Activate
Dim COL As Integer
COL = Range("A:DB").Columns.Select
**Range(Cells(2, COL), Cells(Range("E" & Rows.Count).End(xlUp).Row, COL)).Copy Destination:=Windows("Sample_Data_Import_Template.xlsx").Range("A2")**
Range("A2").Paste
Range("A5000").Formula = "='C:\Users\I53014\Desktop\[Import_Creator.xlsm]sheet1'!$B$2"
ActiveWorkbook.SaveAs Filename:="Range (A5000)", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Run Code Online (Sandbox Code Playgroud)
我一直在那里停下来.
这应该给你包含数据的最后一行:
ActiveSheet.UsedRange.Rows.Count
Run Code Online (Sandbox Code Playgroud)
这将为您提供特定列中的最后一行:
Range("B" & Rows.Count).End(xlUp).Row
Run Code Online (Sandbox Code Playgroud)
这是一个如何复制工作表的前三列中的每一行的示例
Sub Example()
Dim LastRow As Long
LastRow = ActiveSheet.UsedRange.Rows.Count
Range(Cells(1, 1), Cells(LastRow, 3)).Copy Destination:=Sheet2.Range("A1")
End Sub
Run Code Online (Sandbox Code Playgroud)
你必须要小心,因为这两种方法都有一些注意事项.
ActiveSheet.UsedRange 如果没有正确清理细胞,可能包括没有任何数据的细胞.
Range("A" & Rows.Count).End(xlUp).Row 只返回指定列中的行数.
Rows(Rows.Count).End(xlUp).Row 只会返回第一列中的行数.
编辑添加了一个示例
Edit2将示例更改为更清晰
对于这个例子,我们假设我们有这些数据

您可以使用以下方法将任何其他列复制到A列中的行数:
Sub Example()
Dim Col as Integer
Col = Columns("C:C").Column
'This would copy all data from C1 to C5
'Cells(1, Col) = Cell C1, because C1 is row 1 column 3
Range(Cells(1, Col), Cells(Range("A" & Rows.Count).End(xlUp).Row, Col)).Copy Destination:=Sheet2.Range("A1")
End Sub
Run Code Online (Sandbox Code Playgroud)
最终的结果是:
