详细介绍

下图演示了一个常见场景,从原数据中查找制定产品的数据。用的也是常规方法VLOOKUP查找:
=VLOOKUP($E2,$A:$C,COLUMN(B:B),0)
图片
数组公式返回一维数组想要更方便的话可以考虑用数组公式,把查找值设置为数组:
=VLOOKUP(E2:E5,A:C,2,0)
公式以数组形式一次性返回所有产品1月份的数据:
图片
建站客服QQ:88888888
也可以把第三参数列索引设置为数组:
=VLOOKUP(E2,A:C,{2,3},0)公式以数组形式一次性返回一个产品两个月的数据:
图片
{jz:field.toptypename/}
上述两个公式分别返回纵向和横向的一维数组,把它们整合起来是不是应该返回一个二维数组呢?于是把第二、三参数同时设置为数组:
=VLOOKUP(E2:E5,A:C,{2,3},0)公式并没有返回期望中的二维数组,而是纵向数组。
图片
REDUCE+VSTACK返回二维数组Excel365版本中可以用REDUCE来实现如图所示效果:
图片
公式解读:REDUCE函数的作用是将初始值和数组中的每个元素依次应用指定的LAMBDA函数。
· 初始值:""(空值)· 数组:E2:E5· 指定的LAMBDA函数:LAMBDA(x,y,VSTACK(x,VLOOKUP(y,A:C,{2,3},0)))初始值会被传递给LAMBDA中的x,而数组E2:E5中的4个元素会被依次传递给y。
VLOOKUP(y,A:C,{2,3},0)中可以看出y是被作为VLOOKUP的查找值,意味着4个元素都会被作为查找值运行一次。
VLOOKUP每一次运算后的结果与x用VSTACK垂直堆叠,REDUCE最终返回最后一次堆叠后的数组。
DROP函数用于删除数组中的第一行,因为第一行是初始值x,也就是空值,是不需要的数据。
总的来说,这个公式的作用是:对于E2:E5中的每个值,在A:C范围中进行精确查找,AG庄闲和游戏APP并返回第2列和第3列的对应值,然后将这些结果垂直堆叠在一起,最后删除堆叠结果的第一个元素(初始值"")。
REDUCE+VSTACK更多案例REDUCE+VSTACK组合拳应用十分广泛,要把多个值依次应用于某一个公式,都可以考虑用它来一次性完成。
把{"桃子";"山竹"}依次应用于FILTER作为筛选条件,筛选结果用VSTACK垂直堆叠:
=REDUCE(A1:B1,{"桃子";"山竹"},LAMBDA(x,y,VSTACK(x,FILTER(A2:B10,A2:A10=y))))图片
A2:A4中的文本重复指定次数,垂直堆叠:
=REDUCE("重复文本",A2:A4,LAMBDA(x,y,VSTACK(x,EXPAND(y,OFFSET(y,1),y))))图片
好了,今天的Excel小课堂就到此结束,大家赶紧实际操作联系一下吧,有不懂的问题可以留信问我!感谢关注Excel880,还请多多转发,持续关注我们呀!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。