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(绝对引用您的查找表)向下/跨过并行行/列,然后对结果进行平均。