[英]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
,再次。
因此,運行“求值公式”,結果發現AGGREGATE
的k位置(最后一個參數)中的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.