请帮忙!我有一个问题,我过去一直坚持不懈。
我需要将数据从一个工作表传输到另一个工作簿中的另一个工作表。输出行对应于输入列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个数字,因此我尝试与通配符匹配。
任何建议都会非常感激!
答案 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))