我有以下代碼。代碼將進入17個工作簿中的每一個,並根據列標題名稱提取某些列。這將重複並添加到主工作簿的底部,直到最後一個被提取。 不幸的是,如果某個單獨的17個工作簿中的某一列中沒有任何內容,則來自下一個工作簿的數據會在單元格中向上移動。無論如何要排序。我已經添加了下面的代碼。複製多個電子表格中的列。當電子表格中的列爲空時,數據向上移動
Option Explicit
Sub CopyColumns()
Dim CopyFromPath As String, FileName As String
Dim CopyToWb As Workbook, wb As Workbook, CopyToWs As Worksheet
Dim lastRow As Long, NextRow As Long, lcol As Long, c As Long, sv As Integer
Dim ws As Worksheet
Dim myCol As Long
Dim myHeader As Range
r\"
Set CopyToWb = ActiveWorkbook
Set c).End(xlUp).Row
If lastRow = 1 Then GoTo nxt
Range(Cells(2, c), Cells(lastRow, c)).Copy
CopyToWs.Activate
Set myHeader = CopyToWs.Rows(1).Find(What:=.Cells(1, c).Value, Lookat:=xlWhole)
With CopyToWs
If Not myHeader Is Nothing Then
myCol = myHeader.Column
NextRow = .Cells(Rows.Count, myCol).End(xlUp).Row + 1
.Cells(NextRow, myCol).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Set myHeader = Nothing
End If
nxt:
End With
End If
Next c
wb.Close saveChanges:=False
End With
FileName = Dir
Loop
Application.ScreenUpdating = True
End Sub
預先感謝您
你知道你的代碼的確切部分,導致空表上的不需要的行爲? –
如果我正確理解您的問題(即從工作表複製的某些列沒有與其他列相同的行數,但希望一切都繼續排列),則需要將計算'For'循環外的'NextRow',並且將它基於一個你知道總是被填充的列。然後,您應該爲所有列使用相同的值,直到您在處理下一個工作簿時再次計算「NextRow」。 – YowE3K