Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为用户定义的函数选择特定列_Excel_Vba - Fatal编程技术网

Excel 为用户定义的函数选择特定列

Excel 为用户定义的函数选择特定列,excel,vba,Excel,Vba,假设我有一个名为_table1的表,其列标题为a、b、c、d、e 我想要一个用户定义的函数根据这个表进行计算 这是一个例子 Function TEST(var1 As Single, var2 As Single) TEST = Application.Index(range("_table1[c]"), var1 + var2) End Function 这是可行的,但因为函数的输入中没有定义_table1,所以当_table1的值更改时,函数不会自动更改其值 我可以这样做 Fun

假设我有一个名为_table1的表,其列标题为a、b、c、d、e

我想要一个用户定义的函数根据这个表进行计算

这是一个例子

Function TEST(var1 As Single, var2 As Single)
    TEST = Application.Index(range("_table1[c]"), var1 + var2)
End Function 
这是可行的,但因为函数的输入中没有定义_table1,所以当_table1的值更改时,函数不会自动更改其值

我可以这样做

Function TEST(var1 As Single, var2 As Single, rng1 as Range)
    TEST = Application.Index(rng1.Columns(3), var1 + var2)
End Function
当表的值更改时,它将自动更改函数的值。
但它将直接选择表的第三列,而不是标题为c的列。在未来,我将需要更改列的排列,以便更方便地直接将列声明为标题为c的列


当表的值更改时,函数是否会自动更改其值,并让我选择哪列?

如果要指定列,则可以执行
函数测试(var1为单列,var2为单列,rng1为范围,col为长列)
?然后
TEST=Application.Index(rng1.Columns(col),var1+var2)
@SiddharthRout这并不是我想要的。我想要的是,代码将始终使用带有标题c的列,即使将来带有标题c的列不再位于第三列中。但是您的解决方案非常有趣,也许我可以使变量col始终是标题cOR的位置,您可以使用
rng1.Find
查找函数中列的位置。我的意思是你现在有两个选择。看看哪个更容易:)