首页 > 解决方案 > Excel VBA 从嵌套函数中提取值

问题描述

是否可以在 VBA 中提取嵌套子函数的结果值?

例如,从这个 INDEX-MATCH 查找函数中,我想从两个MATCH()函数的结果中找到值:

=+INDEX(Sheet3!$B$5:$I$15;MATCH($A6;Sheet3!$A$5:$A$15;0);1)

我正在寻找一个可以将嵌套MATCH()函数的值作为 VBA 代码中的输入返回的宏。也就是说,我意识到我可以提取MATCH()子函数并让 VBA 将其粘贴为值。我想要的是确定MATCH()函数的值并在我的 VBA 脚本中使用它进行计算。

标签: excelvbafunctionnested

解决方案


由于我没有完全按照您的意思进行操作,所以我猜一猜……您想单独使用 match() 场景吗?

dim x as long, y as long, z as string
x = application.match($A" & ActiveCell & ",Sheet3!$A$5:$A$15,0)"
y = x*3 'perform some work using the row number x, knowing match of 1 = row 5 on sheet3
z = application.index(Sheet3!$B$5:$I$15," & y & ")"

更进一步,您可以利用所述算术匹配值。


本质上,匹配只提供数组中的行号,所以我不知道您所指的“提取”是什么。如果您要提取一个匹配的值,那么您最终会得到 A6 中的(来自您的示例)的内容。


编辑:更新代码以使其可用(以前只是给出了一个概念)

dim x as long, y as long, z as string
with sheets("Sheets3")
    x = application.match(ActiveCell.value,.range(.cells(5,"A"),.cells(15,"A")),0)
    y = x*1 'perform some work using the row number x, knowing match of 1 = row 5 on sheet3
    z = application.index(.range(.cells(5,"B"),.cells(15,"B")),y)  'This index was changed to be a SINGLE COLUMN (was B5:I15)
end with

推荐阅读