【问题标题】:Complicated VLookUp within For Loop VBAFor Loop VBA中的复杂VLookUp
【发布时间】:2021-09-19 00:21:00
【问题描述】:

基本上我需要创建一个 VLOOKUP,它引用我工作簿中的另一个工作表并从相关行中获取数据以创建查找值。 A 列有列车名称,B 列有车站名称。 C、F、I、L...列中的标题有一周中的某一天。我需要在每一列上应用一个 VLOOKUP,例如这里的 C 列,动态行数将查找 Cell(A, [row VLOOKUP is applied to]) 和 Cell(B,[row VLOOKUP正在应用于]) 和 Cell(C1)。

我当前的代码:

i = 3
Dim lastRow As Integer
lastRow = Worksheets("% On Time Customers").Cells(Rows.count, 1).End(xlUp).Row
For Each cell In Worksheets("% On Time Customers").Range("C3:C" & lastRow)
    lookupSunday1 = CStr(Cells(i, 1) & "/" & Cells(1, 3) & "/" & Cells(i, 2))
    cell.Formula = "=VLOOKUP(lookupSunday1,'COTP'!$I:$Y,11)"
    i = i + 1
Next

这有点适用于 C 列 - 有一个#NAME?错误并且每个单元格包含 =VLOOKUP(@lookupSunday1,COTP!$I:%Y,11) 而不是我不确定如何修复的查找结果。

我宁愿不必为一周中的每一天创建 for 循环,特别是因为在一周中的每一天下,有三个单独的列需要再次查找,这似乎非常耗时。但是,如果这是这样做的方法,那么它会起作用。

spreadsheet layout

【问题讨论】:

  • Index() 在您 Match() 一次之后的每列信息,或者匹配一次和 destination.value=source.value 如果列位置不使用 Match() 行更改。

标签: excel vba loops vlookup


【解决方案1】:

基本上,您没有在公式方程式中连接 lookupSunday1 变量,而是在方程式中按字面意思保留名称,由于未知对象而在电子表格上返回 #NAME 错误。

考虑使用i 作为迭代器并使用工作表限定所有RowsCells 引用的以下调整,由With 块促进。公式中需要用三引号将字符串值括起来。

Dim i As Integer, lastRow As Integer

With Worksheets("% On Time Customers")
    lastRow = .Cells(.Rows.count, 1).End(xlUp).Row

    For i = 3 to lastRow
        lookupSunday1 = CStr(.Cells(i, 1) & "/" & .Cells(1, 3) & "/" & .Cells(i, 2))
        .Range("C" & i).Formula = "=VLOOKUP(""" & lookupSunday1 & """, 'COTP'!$I:$Y, 11)"
    Next i
End With

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2016-05-06
    • 1970-01-01
    • 2016-07-05
    • 2020-05-15
    相关资源
    最近更新 更多