Arrays 如何使用ctrl+编写VBA用户定义函数,从IF获取数组参数;班次+;进入?
我创建了一个名为test的函数 我打字的时候没关系Arrays 如何使用ctrl+编写VBA用户定义函数,从IF获取数组参数;班次+;进入?,arrays,vba,excel,user-defined-functions,Arrays,Vba,Excel,User Defined Functions,我创建了一个名为test的函数 我打字的时候没关系 =test({4,5,6,8,9}) 在牢房里。它返回9 让我们在工作表上有一些数据 A B 1 1 3 2 0 6 3 1 9 4 0 7 5 1 8 我用ctrl+shift+enter在单元格中键入以下公式 {=test(IF(A1:A5=1,B1:B5))} 我认为数组已通过测试,但它不起作用。它可以像往常一样返回LBound(a)和UBound(a),但是test=a(UBound(a))失败 有什么
=test({4,5,6,8,9})
在牢房里。它返回9
让我们在工作表上有一些数据
A B
1 1 3
2 0 6
3 1 9
4 0 7
5 1 8
我用ctrl+shift+enter在单元格中键入以下公式
{=test(IF(A1:A5=1,B1:B5))}
我认为数组已通过测试,但它不起作用。它可以像往常一样返回LBound(a)和UBound(a),但是test=a(UBound(a))失败
有什么问题?如何编写write VBA用户定义函数以从IF获取数组参数。这两个示例之间存在根本区别<代码> =test({4,5,6,8,9})通过一维数组,并且
{=test(如果(A1:A5=1,B1:B5))}
通过二维数组。您的代码设置为仅处理一维数组,因此第二个示例失败
如何解决这一问题将完全取决于您实际希望UDF做什么。例如,您可以使用转置将输入强制为1-D,但对于一般情况,这可能仅限于此。最好在参数中进行测试,以确定其维度并相应地进行处理
=test{(如果(A1:A5=1,B1:B5))}
尝试一下这只是一个后续问题,我如何知道这是一个二维数组?这个数组使用了什么索引?cpearson.com上有很多很好的数组函数,包括查找数组的维数。要使其仅适用于二维,请尝试test=a(UBound(a,1))
{=test(IF(A1:A5=1,B1:B5))}