【发布时间】:2018-05-25 22:54:42
【问题描述】:
目前我有一个 for 循环,它遍历 sheet1 列 P 中的每个单元格以提取风味类型,使用在 sheet0 中名为 Table 的命名范围中找到的 vlookup 来获取价格,然后将价格乘以几个不同的数字列回到sheet1。然后它将相乘的列传输到 sheet2。我将这些列转移回 sheet1 以替换原始值。
最后一部分我使用了带有复制和粘贴功能的 with 函数,它运行很快。这是第一部分:
lastrow = wsSheet1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 to lastrow
erow = wsSheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
wsSheet2.Cells(erow, 1) = wsSheet1.Cells(i, 6) * Application.VLookup(wsSheet1.Cells(i, 16), wsSheet0.Range("Table"), 2, False)
wsSheet2.Cells(erow, 2) = wsSheet1.Cells(i, 7) * Application.VLookup(wsSheet1.Cells(i, 16), wsSheet0.Range("Table"), 2, False)
Next i
这个循环大约执行了 10 次,这是一个缓慢 的过程,它引用 P / 16 列中的每个单元格,并将值相乘并传输到 sheet2。我想要一种更快的方法来做到这一点。
我尝试使用 With 函数完成这个替代过程,我将跳过转移到 sheet2,并替换 sheet1 中的值 -
With wsSheet1.Range("F2:F" & lastrow)
.Value = Evaluate(.Address & "*" & [VLOOKUP('sheet1'!P2, 'sheet0'!FXTable, 2, FALSE)])
End With
但不确定如何使用动态变化的参考范围进行这项工作,因此 vlookup 值不会像我上面所说的那样固定在 P2
【问题讨论】: