VBA 使用动态 reference/arrays 插入 INDEX/MATCH 公式的脚本

VBA script to insert INDEX/MATCH formula with dynamic reference/arrays

我希望在现有选择旁边的列中简单地插入一个 INDEX/MATCH 公式(这将是更大子的一部分)。公式中的reference/look-up数组需要是动态的

到目前为止,我已经成功地插入了公式。但是,reference/lookup-arrays 是我手动输入的,因为我知道当前的范围(可能会改变):

Selection.Offset(0, 1) = "=INDEX($J:$J,MATCH(INDIRECT(""RC[-2]"",0),$H:$H,0))"

如何修改$J:$J$H:$H动态更新?我已经通过 'Range("J3", Range("J3").End(xlDown))' 之类的东西分别取得了成功,但我似乎无法将它应用到上面的代码中。

你可以将变量整合到公式中,这变得有点棘手,我想有更好的方法来实现这一点,但这是我在 VBA 中的公式中需要动态范围时使用的方法。我将在下面提供一个应该有所帮助的示例:

我假设 J3 和 H3 将保持不变,但范围的末尾是您希望更改的内容。如果不是这种情况,请告诉我。

您实际上是将范围参考中的“31”替换为“& [变量] &”(包括引号)。

编辑:我使用 Sheet1 作为行数的示例;所以只需将其更新为适用的 sheet 和范围即可。

    Dim rCount As Long
    rCount = Sheet1.Range("A" & Rows.Count).End(xlUp).Row

    Selection.Offset(0, 1) = "=INDEX($J:$J$" & rCount & ",MATCH(INDIRECT(""RC[-2]"",0),$H:$H$" & rCount & ",0))"