2013-03-01 36 views
2

我想从我的Excel UDF返回一个二维数组,但似乎只返回第1个要素:如何从Excel udf返回数组?

public object[,] Get2DArray() 
{   
    object [,] a = new object[2, 2]; 
    a[0,0] = 0; 
    a[0,1] = 1; 
    a[1,0] = 2; 
    a[1,1] = 3; 
    return a; 
} 

凡调用看起来像:

=Get2DArray() 

我在做什么错?

编辑:数组的大小可能会改变不时,所以我不希望有指定结果将填补范围的大小。

+0

为什么不使用列表?或IEnumerable? – Mortalus 2013-03-01 07:47:11

+0

你是什么意思,它只返回第一个元素?在excel一侧显示将数组内容分配给一个范围的代码。 – shahkalpesh 2013-03-01 08:03:28

+0

Mortalus,我可以使用一个列表,但我似乎需要指定数据在输入公式前应填入的范围。我不想这样做,我宁愿将公式留在单元格中,然后当它有数据时,它应该填充公式所在单元格下面的所有单元格。 – 2013-03-01 08:06:31

回答

0

因为它是2维数组,所以不能将数组的内容分配给单个单元格

从你的例子中,你返回一个2×2的数组 - 选择一个范围(具有确切的大小)并在选择的第一个单元格中写入公式。
对于例如说你选择A1到B2,按F2,在单元格A1中键入公式(选择处于活动状态),然后你应该能够看到写入B1,A2,B2的值。

我知道返回值数组可以是动态的。我不知道如何处理。但是,您可以在VBA中完成此操作,而不是使用UDF。

+0

仍然只给出第一个使用1d数组的元素 – 2013-03-01 08:50:45

+0

它在Excel中显示什么值? – shahkalpesh 2013-03-01 08:53:32

+0

它显示0.我认为我需要使用Application.Caller并从那里派生地址。 – 2013-03-01 09:03:12