我有一本工作簿,用来跟踪实验数据的长期趋势。用于各种实验的独立工作簿生成需要复制到此跟踪工作簿的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's来查找是否填充了列并从那里进入。肯定不雅。
对不起,我没有任何真正的代码,但我真的不知道如何开始。已经有几百列了,而且还会有几百列。如果它不是那么大,我会用嵌套If语句来强迫自己,直到它找到一个空列为止。
注:我对此非常缺乏经验,如果我错过了任何显而易见的事情,请原谅。
发布于 2022-10-11 22:58:25
可以使用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 Functionhttps://stackoverflow.com/questions/74034629
复制相似问题