【问题标题】:Can an ARRAYFORMULA be used for grouped RANK?ARRAYFORMULA 可以用于分组排名吗?
【发布时间】:2019-10-28 08:49:43
【问题描述】:

我无法在 ARRAYFORMULA 内的分组行中使用 RANK

我有一个大数据集(≈100.000 行),我想在其中创建一个 ARRAYFORMULA,为共享相同标识符的行创建一个不同的 RANK

虽然我在拖动公式(结合RANKFILTER)时没有问题得到结果,但我无法使用ARRAYFORMULA 复制结果。 This file with dummy data 复制了这个问题。

在此先感谢您的帮助。

【问题讨论】:

    标签: google-sheets average google-sheets-formula array-formulas google-sheets-query


    【解决方案1】:

    原则上你可以通过排序和计数来做到这一点,但在实践中这很困难,因为你想使用的函数像 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,""))
    

    【讨论】:

      【解决方案2】:

      还有解决办法:

      美国语法

      =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)))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        • 2019-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多