【发布时间】:2017-05-15 08:13:56
【问题描述】:
我现在才使用 VBA 几个星期,所以请耐心等待。
我正在尝试更改宏,以便它从数组而不是范围中读取。我需要更改的部分之一使用 .formulaR1C1 来运行 vlookup,但我很难弄清楚如何使用数组完成此操作。
下面这行就是一个例子:
.Range("M2:L" & lastrow).FormulaR1C1 = "=VLOOKUP(RC[-1], Sheet2!R1C1:R4C10, 3, 0)"
我不太确定是否可以将数组的值设置为公式,就像我在上面所做的那样,或者我是否必须将值存储为字符串然后编辑单元格的值稍后将列打印回工作表时。
到目前为止我所拥有的如下:
For i = 2 To lastrow
arr(i, 13).FormulaR1C1 = "=VLOOKUP(RC[-1],Sheet2!R1C1:R4C10,3,0)"
Next
提前致谢!
【问题讨论】:
-
您不能将数组设置为等于公式。您可以将其设置为包含公式,例如
arr(i,13) = "=VLOOKUP(RC[-1],WMSPAM!R1C1:R4C10,3,0)"然后,当您将数组写回工作表时,您可以将cell.FormulaR1C1属性设置为等于数组公式。 -
谢谢汤姆!这几乎就是我需要知道的
-
您可以使用
Application.Evaluate在数组中设置公式的结果,但是我不确定您是否可以使用非显式 R1C1 表示法来实现它(例如RC[-1]) -
为什么首先需要对数组进行此操作?
-
嗨 Omega,这只是代码的一小部分,它经常运行在数万行之上,所以使用数组是一种性能提升。
标签: arrays vba excel excel-formula