gpt4 book ai didi

arrays - 在 VBA 中使用数组代替范围

转载 作者:行者123 更新时间:2023-12-02 17:37:32 26 4
gpt4 key购买 nike

我现在才使用 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

提前致谢!

最佳答案

将值存储为字符串肯定是一个有效的选项。只需在数组中写入公式,假设它是 Variant/String 类型,当您将数据放回到工作表中时,您可以在单元格(范围)对象上使用 .FormulaR1C1 将其应用为一个公式。

arr(i, 13) = "=VLOOKUP(RC[-1],WMSPAM!R1C1:R4C10,3,0)"
...
Range("M2").FormulaR1C1 = Arr(1,13)

我相信这种方法可能对您来说是最有效且最容易维护的。当您正在学习并且似乎对可能性感到好奇时,这里有更多关于如何实现这一点的示例,以及一些进一步的解释。

<小时/>

.FormulaR1C1 是 Range 对象方法,因此在 Array 项上调用它的唯一方法是该项是 Range 对象。

Dim arr(0 To 10) As Range
Set arr(0) = Range("A1")
arr(0).FormulaR1C1 = "=2+2"

请注意,由于 Ranges 是一个对象(引用类型),因此该操作将直接影响数组中指定的 Range。在上面的示例中,公式“=2+2”将被放入单元格A1中。您可以详细了解引用类型和值类型之间的区别here .

<小时/>

如果您的数组仅包含值,则实现您所需的另一种方法是使用 WorksheetFunction 对象。使用此对象,您可以访问将在 VBA 内的工作表中使用的公式函数。

WorksheetFunction.VLookup(Arg1, Arg2, Arg3, Arg4)

与编写代码中的任何内容一样,WorksheetFunction 方法需要一些尝试和错误才能让它们按照您期望的方式工作,但根据我的经验,这些具体实现起来可能很棘手,但有在某些情况下它们非常有用!

您可以阅读有关 VLookup 方法的更多信息 here

关于arrays - 在 VBA 中使用数组代替范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com