excel - 将列从一个工作簿复制到另一个工作簿,查找目标工作表中的第一个空列

标签 excel vba

我有一本跟踪实验数据长期趋势的工作簿。各种实验的独立工作簿会生成 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/

相关文章:

c# - 解析器将 .net 字典或列表转换为 VBA 的等效字典或集合

excel - 为什么 Excel VBA 给我一个动态范围的错误?

Excel UDF 计算应返回 'original' 值

excel - 基于单元格匹配的行重排

vba - 如何为工作表制作下拉列表

vba - 验证各种条件

excel - 如何选择整个Excel电子表格作为数据透视表?

excel - 分配给数组

excel - 计算某个值连续出现的最大次数

excel - 使用 getElementsByTagName() 进行网页抓取