簡體   English   中英

ARRAYFORMULA 可以用於分組排名嗎?

[英]Can an ARRAYFORMULA be used for grouped RANK?

我無法在ARRAYFORMULA內的分組行中使用RANK

我有一個大數據集(≈100.000 行),我想在其中創建一個ARRAYFORMULA ,它為共享相同標識符的行創建不同的RANK

雖然我在拖動公式(結合RANKFILTER )時沒有問題得到結果,但我無法使用ARRAYFORMULA復制結果。 這個帶有虛擬數據的文件復制了這個問題。

在此先感謝您的幫助。

原則上您可以通過排序和計數來實現,但在實踐中這很困難,因為您想使用的函數(如 Countifs)對數組不友好。 這是一種相當冗長的排序方式,在 Slug 和 Points 的組合上進行 Vlookup,獲取匹配的行號,然后從僅在 Slug 上匹配的 Vlookup 中減去您獲得的行號:

=ArrayFormula(if(A2:A<>"",vlookup(A2:A&"|"&B2:B,{sort(A2:A&"|"&B2:B,A2:A,true,B2:B,false),row(A2:A)},2,false)-
vlookup(A2:A,{sort(A2:A,A2:A,true),row(A2:A)},2,false)+1,""))

在此處輸入圖像描述

還有解決方案:

美國語法

=ARRAYFORMULA(IFNA(VLOOKUP(A2:A&"♥"&B2:B, SORT(SPLIT(TRANSPOSE(SPLIT(
 QUERY(TRANSPOSE(QUERY(TRANSPOSE("♦"&UNIQUE(SORT(FILTER(A2:A, A2:A<>"")))&"♥"&
 SPLIT(TRANSPOSE(QUERY(TRANSPOSE(IF(QUERY(QUERY({A2:A, B2:B+(ROW(B2:B)*0.00000001)}, 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"), "offset 1", 0)=1, 
 ROUNDDOWN(QUERY(QUERY({A2:A, B2:B+(ROW(B2:B)*0.00000001)}, 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"), "limit 0", 1), 0), ))
 ,,999^99)), " ")&"♠"&transpose(SORT(ROW(INDIRECT("A1:A"&COLUMNS(SPLIT(TRANSPOSE(
 QUERY(TRANSPOSE(IF(QUERY(QUERY({A2:A, B2:B+(ROW(B2:B)*0.00000001)}, 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"), "offset 1", 0)=1, 
 ROUNDDOWN(QUERY(QUERY({A2:A, B2:B+(ROW(B2:B)*0.00000001)}, 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"), "limit 0", 1), 0), ))
 ,,999^99)), " ")))), 1, 0))),,999^99)),,999^99), "♦")), "♠"), 2, 1), 2, 0)))

歐盟語法:

=ARRAYFORMULA(IFNA(VLOOKUP(A2:A&"♥"&B2:B; SORT(SPLIT(TRANSPOSE(SPLIT(
 QUERY(TRANSPOSE(QUERY(TRANSPOSE("♦"&UNIQUE(SORT(FILTER(A2:A; A2:A<>"")))&"♥"&
 SPLIT(TRANSPOSE(QUERY(TRANSPOSE(IF(QUERY(QUERY({A2:A\ B2:B+(ROW(B2:B)*0,00000001)}; 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"); "offset 1"; 0)=1; 
 ROUNDDOWN(QUERY(QUERY({A2:A\ B2:B+(ROW(B2:B)*0,00000001)}; 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"); "limit 0"; 1); 0); ))
 ;;999^99)); " ")&"♠"&transpose(SORT(ROW(INDIRECT("A1:A"&COLUMNS(SPLIT(TRANSPOSE(
 QUERY(TRANSPOSE(IF(QUERY(QUERY({A2:A\ B2:B+(ROW(B2:B)*0,00000001)}; 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"); "offset 1"; 0)=1; 
 ROUNDDOWN(QUERY(QUERY({A2:A\ B2:B+(ROW(B2:B)*0,00000001)}; 
 "select count(Col1) where Col1 is not null group by Col1 pivot Col2"); "limit 0"; 1); 0); ))
 ;;999^99)); " ")))); 1; 0)));;999^99));;999^99); "♦")); "♠"); 2; 1); 2; 0)))

在此處輸入圖像描述

暫無
暫無

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

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