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))"
我希望在现有选择旁边的列中简单地插入一个 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))"