我在一个文件夹中有100多个文件。每个文件有3个列表,但只有1个列表包含数据。我需要从每个文件中获取数据并将其合并到一个列表中的单个文件中。我为它写了一个子,但我不确定如何选择只需要的范围(因文件而异) - 就像你在Ctrl + Shift + left arrow + down arrow
的键盘上一样。我应该如何在结果工作簿中将其粘贴到之前粘贴的数据之后的第一个空闲行?
Sub combine()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Dim ExcelApp As Object
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False
ExcelApp.ScreenUpdating = False
ExcelApp.DisplayAlerts = False
ExcelApp.EnableEvents = False
'**VARIABLES**
Dim folderPath As String
folderPath = "Y:\plan_graphs\final\mich_alco_test\files\"
'COUNT THE FILES
Dim totalFiles As Long
totalFiles = 0
Dim fileTitle As String
fileTitle = Dir(folderPath & "*.xl??")
Do While fileTitle <> ""
totalFiles = totalFiles + 1
fileTitle = Dir()
Loop
'OPENING FILES
Dim resultWorkbook As Workbook
Dim dataWorkbook As Workbook
Set resultWorkbook = ExcelApp.Application.Workbooks.Open("Y:\plan_graphs\final\mich_alco_test\result.xlsx")
fileTitle = Dir(folderPath & "*.xl??")
'FOR EACH FILE
Do While fileTitle <> ""
Set dataWorkbook = ExcelApp.Application.Workbooks.Open(folderPath & fileTitle)
dataWorkbook.Worksheets("List1").Range("A1").Select
dataWorkbook.Worksheets("List1").Selection.CurrentRegion.Select
`resultWorkbook.Range
fileTitle = Dir()
Loop
ExcelApp.Quit
Set ExcelApp = Nothing
End Sub
答案 0 :(得分:2)
我可能误解了这个问题,不幸的是我无法发表评论。如果我把这个问题弄错了,我会删除。
但我不确定如何选择只需要的范围
这表示您拥有动态数据量,并希望使用Range
来获取选择。
假设您知道所述数据所在位置的列位置(在这种情况下,我的列表从B2开始,我们不知道它的结束位置。您可以使用Range
来动态选择所有数据:
Dim rcell As Range
Dim rng As Range
Set rng = ActiveSheet.Range("B2", Range("B2").End(xlDown))
For Each rcell In rng.Cells
Debug.Print rcell.Value
Next rcell
End Sub
首先我们定义一个Range
变量并将其分配到从B2开始的范围,并使用.End(xlDown)
我们可以选择一个以最终条目结尾的范围。
有关.End()
的进一步阅读,请参阅here.
希望这会有所帮助。
答案 1 :(得分:1)
您可以在没有VBA的情况下执行此操作。使用Get&amp;转而改变。
以下是帮助您入门的几个步骤:
答案 2 :(得分:0)