簡體   English   中英

AGGREGATE和INDEX函數中的數組

[英]Arrays in `AGGREGATE` and `INDEX` functions

場景:

因此,今天在工作中,我的計算機運行了MS Office更新。 然后,大約30分鍾后,有人來找我,這似乎是一個簡單的請求:他們不希望使用VLOOKUP僅返回第一個比賽,而是想要一個定界的所有比賽列表。 (例如“該用戶本周訪問過哪些辦公室”?)看起來很簡單。

因此,使用一些垃圾數據(見下文),我迅速編寫了以下快速演示行:

=TEXTJOIN(", ", TRUE, IFERROR(INDEX(B$1:B$11, AGGREGATE(15, 6, ROW(A$1:A$11)/--(A$1:A$11=E1), ROW(A$1:A$11))),""))

按下Enter鍵 ,然后... 6 不太符合我的期望( 6, 35, 19, 56, 47 ),所以我說“對不起”,回到單元格,然后按Ctrl + Shift + Enter

6 ,再次。

因此,運行“求值公式”,結果發現AGGREGATEk位置(最后一個參數)中的ROW(A$1:A$11)返回1而不是{1,2,3,4,5,6,7,8,9,10,11} ,無論您使用的是普通公式還是數組公式。

所以,我手動輸入數組:

=TEXTJOIN(", ", TRUE, IFERROR(INDEX(B$1:B$11, AGGREGATE(15, 6, ROW(A$1:A$11)/--(A$1:A$11=E1), {1,2,3,4,5,6,7,8,9,10,11})),""))

最終結果: 6 我再次評估公式,並且AGGREGATE丟棄了數組中除第一個值以外的所有內容。 如果我放下INDEX ,而只在AGGREGATE結果上運行TEXTJOIN ,它就可以正常工作。 同樣, =SUM(ROW(B1:B11))可以正常工作,但是=SUM(INDEX(B1:B11, ROW(B1:B11), 1))不能正常工作。

問題:

現在,我有95%的把握可以使用此INDEX(.., AGGREGATE(..))SUM(INDEX(..))正常工作,而不僅僅是返回第一個值-這是我的能力嗎關於某些函數鏈如何與Array一起使用發生了一些變化,還是我記錯了?

(對於那些感興趣的人,最后我們使用了數組公式=TEXTJOIN(", ", TRUE, IF(A$1:A$11=E1, B$1:B$11, ""))

測試中使用的垃圾數據:

A |  6
A | 35
A | 19
B | 33
B | 46
B | 72
A | 56
C | 41
C | 20
B | 52
A | 47

雖然您發現添加IF而不是冗長的INDEX / AGGREGATE可以工作。

它不起作用的原因是,通常沒有將INDEX設置為將數組作為行號。

但是我們可以強制它使用N(IF({1},...))

=TEXTJOIN(", ", TRUE, IFERROR(INDEX(B$1:B$11, AGGREGATE(15, 6, ROW(A$1:A$11)/--(A$1:A$11=E1), N(IF({1},ROW(A$1:A$11))))),""))

這是一個數組公式,退出編輯模式時,需要使用Ctrl-Shift-Enter而不是Enter進行確認。

在此處輸入圖片說明

但這又是一個簡單的IF()完成所需工作的漫長道路。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM