我有一本跟踪实验数据长期趋势的工作簿。各种实验的独立工作簿会生成 2-3 列数据,需要将这些数据复制到此跟踪工作簿中。我可能会选择这样的东西:
Workbooks(source_book).Worksheets(source_sheet).Range(Source_Range_Variable).Copy
Workbooks(target_book).Worksheets(target_sheet).Range(Target_Range_Variable).PasteSpecial xlPasteValues
我的问题是我不知道如何找到“Target_Range_Variable”,它是目标表中的第一个空列。我对如何设置“Source_Range_Variable”有一些想法,因为它可以是一列或两列,通过使用嵌套的 if 来查找列是否已填充并从那里开始。肯定不优雅。
抱歉,我没有任何真正的代码,但我真的不知道如何开始。已经有几百根柱子了,还会有几百根柱子。如果它不是那么大,我会通过嵌套 if 语句来暴力破解,直到找到一个空列。
注意:我对此非常缺乏经验,如果我遗漏了任何明显的内容,请原谅我。
最佳答案
您可以使用Cells.Find
方法查找最后一列。这是一个示例(未经测试)
Sub Sample()
'
'~~> Rest of code
'
Workbooks(source_book).Worksheets(source_sheet).Range(Source_Range_Variable).Copy
Dim LastCol As Long
Dim ColName As String
'~~> Get the last column number
LastCol = LastColumn(Workbooks(target_book).Worksheets(target_sheet))
'~~> Column number to column letter
ColName = Split(Cells(, LastCol).Address, "$")(1)
'~~> Your final range. Ex "A1"
Target_Range_Variable = ColName & 1
Workbooks(target_book).Worksheets(target_sheet).Range(Target_Range_Variable).PasteSpecial xlPasteValues
End Sub
Private Function LastColumn(wks As Worksheet) As Long
If Application.WorksheetFunction.CountA(wks.Cells) <> 0 Then
LastColumn = wks.Cells.Find(What:="*", _
After:=wks.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
Else
LastColumn = 1
End If
End Function
关于excel - 将列从一个工作簿复制到另一个工作簿,查找目标工作表中的第一个空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74034629/