我有以下代码。代码将进入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