Excel有没有地图或selectfunction?

我有一行string值,我想每个做一个vlookup ,然后计算结果的平均值。 如果这是C#,我会做一个Select( str => VLookup(str,dict)).Average() ,有没有办法在一个单一的Excel函数中做到这一点?

我正在使用版本2010

一般来说,没有。 对于你的具体情况,种类。

假设你有这样一张桌子

 a 42 b 2 c 3 

在E8:F10。 如果你用这样的数组调用VLOOKUP:

 =VLOOKUP({"a","c"},E8:F10,2,FALSE) 

你会得到一个数组值:{42,3}。 (input公式作为数组函数… Ctrl + Shift + Enter。)所以在这种情况下,你可以做的地图部分。

不幸的是,AVERAGE似乎不能与VLOOKUP返回的数组一起使用,并将结果放在一个单元格中。 更糟的是,它似乎工作,但只是使用第一个元素,即使你作为一个数组公式input整个事情。 也就是说,如果你把:

 =AVERAGE(VLOOKUP({"a","c"},E8:F10,2,FALSE)) 

在H12单元格中,即使你以数组公式的formsinput,你也可以得到42而不是22.5。

奇怪的是,将相同的公式放在两个单元格中,比如H16:I16,并将其作为数组公式input,可以返回包含两个元素{22.5,22.5}的数组。 (这可能只是一个单元数组扩展到两个单元格。)所以,你可以得到你所需要的,而不必有一个大的中间数组结果。 (使用数组代替工作表函数的非数组参数可能会更奇怪。请参阅: 是否有关于使用数组参数调用的内置Excel函数的行为的任何文档?

当然,更类似于Excel的方法是使用中间数组,而不是尝试将其压缩成花哨的数组公式。 您将有一个要查找的string列表,然后将一个简单的VLOOKUP(绝对引用您的查找表)向下/跨过并行行/列,然后对结果进行平均。