电竞比分网-中国电竞赛事及体育赛事平台

分享

REDUCE+VSTACK組合拳,一個公式返回所有結果

 昵稱72339616 2025-06-19 發(fā)布于湖北

REDUCE+VSTACK組合拳,一個公式返回所有結果

常見場景:VLOOKUP查找

下圖演示了一個常見場景,從原數(shù)據(jù)中查找制定產(chǎn)品的數(shù)據(jù)。用的也是常規(guī)方法VLOOKUP查找:

=VLOOKUP($E2,$A:$C,COLUMN(B:B),0)

數(shù)組公式返回一維數(shù)組

想要更方便的話可以考慮用數(shù)組公式,把查找值設置為數(shù)組:

=VLOOKUP(E2:E5,A:C,2,0)

公式以數(shù)組形式一次性返回所有產(chǎn)品1月份的數(shù)據(jù):

也可以把第三參數(shù)列索引設置為數(shù)組:

=VLOOKUP(E2,A:C,{2,3},0)

公式以數(shù)組形式一次性返回一個產(chǎn)品兩個月的數(shù)據(jù):

上述兩個公式分別返回縱向和橫向的一維數(shù)組,把它們整合起來是不是應該返回一個二維數(shù)組呢?于是把第二、三參數(shù)同時設置為數(shù)組:

=VLOOKUP(E2:E5,A:C,{2,3},0)

公式并沒有返回期望中的二維數(shù)組,而是縱向數(shù)組。

REDUCE+VSTACK返回二維數(shù)組

Excel365版本中可以用REDUCE來實現(xiàn)如圖所示效果:

公式解讀:

REDUCE函數(shù)的作用是將初始值和數(shù)組中的每個元素依次應用指定的LAMBDA函數(shù)。

  • · 初始值:""(空值)
  • · 數(shù)組:E2:E5
  • · 指定的LAMBDA函數(shù):LAMBDA(x,y,VSTACK(x,VLOOKUP(y,A:C,{2,3},0)))

初始值會被傳遞給LAMBDA中的x,而數(shù)組E2:E5中的4個元素會被依次傳遞給y。

VLOOKUP(y,A:C,{2,3},0)中可以看出y是被作為VLOOKUP的查找值,意味著4個元素都會被作為查找值運行一次。

VLOOKUP每一次運算后的結果與x用VSTACK垂直堆疊,REDUCE最終返回最后一次堆疊后的數(shù)組。

DROP函數(shù)用于刪除數(shù)組中的第一行,因為第一行是初始值x,也就是空值,是不需要的數(shù)據(jù)。

總的來說,這個公式的作用是:對于E2:E5中的每個值,在A:C范圍中進行精確查找,并返回第2列和第3列的對應值,然后將這些結果垂直堆疊在一起,最后刪除堆疊結果的第一個元素(初始值"")。

REDUCE+VSTACK更多案例

REDUCE+VSTACK組合拳應用十分廣泛,要把多個值依次應用于某一個公式,都可以考慮用它來一次性完成。

把{"桃子";"山竹"}依次應用于FILTER作為篩選條件,篩選結果用VSTACK垂直堆疊:

=REDUCE(A1:B1,{"桃子";"山竹"},LAMBDA(x,y,VSTACK(x,FILTER(A2:B10,A2:A10=y))))

A2:A4中的文本重復指定次數(shù),垂直堆疊:

=REDUCE("重復文本",A2:A4,LAMBDA(x,y,VSTACK(x,EXPAND(y,OFFSET(y,1),y))))

好了,今天的Excel小課堂就到此結束,大家趕緊實際操作聯(lián)系一下吧,有不懂的問題可以留信問我!感謝關注Excel880,還請多多轉發(fā),持續(xù)關注我們呀!

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多