复制多个工作表列中的仅限值单元格并粘贴到一列中

我有多个电子表格,我需要复制从“S4”开始,专门命名的工作表上的列,我只需要包含数据的该列中的单元格(从S4开始,下面的所有内容)。

我需要复制这些数据并将其粘贴到我的“主”电子表格中,从A2开始在特定的工作表上。 我可以用一个电子表格来做到这一点,但我遇到的问题我需要VBA来find列A中的最后一个单元格,它有一个值,并开始粘贴新的数据到它下面的单元格等等…否则,当它看着其他电子表格,它只是覆盖我的主电子表格中的数据。

你会注意到S4:S2000的指定范围 – 它的目的是为了一个电子表格,它运行良好,因为我从来没有过2000年的数据,但我真的只是需要它寻找单元格值和抓住这些。

这是我有麻烦的代码块。 我希望它从A2开始search(跳过列标题),查找具有值的最后一个单元格,并粘贴其他工作表上从S4开始的单元格。

On Error Resume Next Set wbkCS = Workbooks.Open(strCutSheetFile(i)) On Error GoTo 0 If Not wbkCS Is Nothing Then With wbkVer.Sheets("Cutsheets") .Range(.Cells(2,1)).End(xlUp).Row = wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Value 

我不得不调整你的一点,因为我正在处理受保护的文件,但这工作:

 Set copyRng1 = Worksheets("Cutsheets").Range("A2") If copyRng1 = "" Then wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Locked = False wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy Destination:=wbkVer.Worksheets("Cutsheets").Range("A2") Else wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy Destination:=wbkVer.Worksheets("Cutsheets").Range("A" & wbkVer.Worksheets("Cutsheets").Range("A65536").End(xlUp).Row + 1) End If 

这里有个例子可能会把你推向正确的方向

假设我想使用工作簿中所有其他工作表中的来自S4:S2000数据在Sheet1聚合我的数据。

 Sub CopyAndStack() Dim wkShtIndex As Integer, copyRng As Range Set copyRng = Worksheets(1).Range("A2") For wkShtIndex = 2 To Worksheets.Count If copyRng = "" Then Worksheets(wkShtIndex).Range("S4:S2000").Copy Destination:=copyRng Else Worksheets(wkShtIndex).Range("S4:S2000").Copy Destination:=Range("A" & copyRng.End(xlDown).Row + 1) End If Next wkShtIndex End Sub 

我检查A2是否为空,如果是,我粘贴第一批数据。

如果A2不是空的,我得到列A中的下一个空单元格并粘贴在那里。

以下是如何获得S中填充的行:

 Dim StrRange As String . . . 'Get range strRange = "S4:S" & Worksheets(wkShtIndex).UsedRange.Columns("S:S").Rows.Count 'Do something with range Worksheets(wkShtIndex).Range(strRange)