用vba编写excel函数

用vba编写excel函数,vba,excel,excel-2010,Vba,Excel,Excel 2010,我试图将匹配和索引函数编写为vba代码,但由于出现了几个错误,它无法工作 在excel中,我有一个表R5:AD33 我过去常常通过匹配函数来获取要输入到索引函数中的行数和列数 =MATCH(R35,Q5:Q33, 0) =MATCH(R36, R3:AD3,0) 然后,我使用index函数给出与行和列编号对应的单元格值 =INDEX(R5:AD33,S35,S36) 我试图输入这个代码,但它给了我2个错误,我无法解决继续调试 下面这行代码给了我一个“不允许常数赋值”。我不确定常数在哪里,因

我试图将匹配和索引函数编写为vba代码,但由于出现了几个错误,它无法工作

在excel中,我有一个表
R5:AD33
我过去常常通过匹配函数来获取要输入到索引函数中的行数和列数

=MATCH(R35,Q5:Q33, 0)

=MATCH(R36, R3:AD3,0)
然后,我使用index函数给出与行和列编号对应的单元格值

=INDEX(R5:AD33,S35,S36)
我试图输入这个代码,但它给了我2个错误,我无法解决继续调试

下面这行代码给了我一个“不允许常数赋值”。我不确定常数在哪里,因为x是一个变量

WorksheetFunction.Match("NPS", Sheets("sheet2").ListObjects("Table1"), 0) = x
还有一个用户类型未定义错误,但它没有突出显示特定的代码行


谢谢。

Match返回一个数字——搜索词在搜索数组中的位置。因此,您的代码行正在尝试将x的值分配给某个数字。你打算做什么还不清楚。如果希望为x指定匹配结果的值,则交换匹配调用和x,因此:x=WorksheetFunction.Match(“NPS”),Sheets((“sheet2”).ListObjects(“Table1”),0)在没有看到实际的VBA代码的情况下,Rich看起来是正确的。我认为对于未定义的用户数据类型,您需要单击“工具”、“引用”和“Visual Basic for Applications”或“Microsoft Visual Basic for Applications Extensibility 5…”框。我现在在GNU/Linux框中,或者更具体一些。