将值粘贴到另一张表中的匹配单元格中

时间:2014-04-22 11:59:53

标签: excel vba excel-vba

请帮忙!我有一个问题,我过去一直坚持不懈。

我需要将数据从一个工作表传输到另一个工作簿中的另一个工作表。输出行对应于输入列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个数字,因此我尝试与通配符匹配。

任何建议都会非常感激!

1 个答案:

答案 0 :(得分:0)

这是解决问题的正确方法。你需要使用' 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))