【问题标题】:Pasting value into matched cell in another sheet将值粘贴到另一张表中的匹配单元格中
【发布时间】:2014-06-06 18:52:22
【问题描述】:

请帮忙!我有一个问题,我在过去的一天一直被困住。

我需要将数据从一个工作表传输到另一个工作簿中的另一个工作表。输出行对应输入列 a 中的值,输出列对应输入工作表列 B 中的日期。

我之前将输入/输出工作簿/工作表分别调暗为 wbin、wbout、sheetin、sheetout。谁能帮忙看看我的问题出在哪里?我得到的错误是运行时错误'9':复制目标行中的下标超出范围。

Windows(wbin).Activate
Sheets(sheetin).Select

iMaxRow = 5000
Dim subj1 As String
Dim subj2 As String
For iRow = 1 To iMaxRow

    subj1 = Range("B" & iRow).Text
    subj2 = Range("A" & iRow).Text

    With Workbooks(wbin).Sheets(sheetin).Cells(iRow, 3)
'On Error Resume Next

    .Copy Destination:=Workbooks(wbout).Worksheets(sheetout).Cells(WorksheetFunction.Match(subj2 & "*", _
    Workbooks(wbout).Sheets(sheetin).Columns(2), 0) & _
    WorksheetFunction.Match(subj1, Workbooks(wbout).Sheets(sheetin).Rows(2), 0) + 1)
    End With

Next iRow

现在,我已经禁用了下一步错误恢复。另外,输入列a有4个数字后跟字符串,而对应的输出行标题只有4个数字,因此我尝试与通配符匹配。

任何建议将不胜感激!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这是解决问题的正确方法。您需要使用“Range.Find”而不是“WorksheetFunction.Match”。

    Dim dateHeader as Range, foundCell as Range
    Set dateHeader = Workbooks(wbout).Worksheets(sheetout).Rows(2)
    Set foundCell = dateHeader.Find(subj1)
    
    .Copy Intersect(foundCell.EntireColumn, Workbooks(wbout).Worksheets(sheetout).Rows(subj2))
    

    【讨论】:

    • 嗨,Seb,谢谢!我能否澄清一下,foundCell 是什么意思?
    • foundHeader 意图成为 Workbooks(wbout).Worksheets(sheetout) 中匹配“subj1”的单元格。您可能必须重新定义“dateHeader”才能使我的代码正常工作
    • 是的,我做到了;刚刚将行更改为 2。我刚刚注意到您将 foundCell 作为范围包括在内,但未定义。我只是想知道它有什么作用?
    • 我编辑了我的答案,您应该已经阅读:Set foundCell = dateHeader.Find(subj1, LookIn:=dateHeader)
    • 谢谢赛布!它还没有完全起作用,但我想我有点明白了。不过,我可以问一下,鉴于我的 subj2 是“#### texttexttext”,并且我需要将它与输出表中的行匹配,而 B 列上只有“####”,我可以使用相同的方法吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2021-07-16
    • 1970-01-01
    • 2019-09-05
    • 2021-05-27
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多