【发布时间】:2021-06-16 12:03:46
【问题描述】:
我想要一个 C1 的 ArrayFormula,它给出了所需的结果,如图所示。
报名表:
(C栏是我的必填栏)
输入的日期是为名称分配组的日期,即 a、b、c、d、e、f
标准:
- count 的值纯粹基于输入的日期(如果 john 在最低日期(10-Jun)被分配 a 那么 count 值为 1,如果 rose 被分配 a 倒数第二个日期(17-6 月),则计数值为 2)。
- 即使数据以任何方式排序,count 的值也不会改变,因为 Date Entered 列的值始终是永久的并且不会改变。
- 新条目日期可以是任何日期,不一定是最高日期(如果一个名为 Rydu 的新条目在 6 月 9 日被分配 a 那么它的计数值将变为 1,然后 john's (10- Jun) 将变为 2 等等)
示例:
在我以任意随机顺序对数据进行排序后,这样说:
随机排序表:
(计数值保持不变)
当我在(第 4 行和第 14 行)之间和最后一行(第 17 行)之后执行新条目时:
我已经得到了一个给出所需结果的 ArrayFormula:
={"AF Formula1"; ArrayFormula(IF(B2:B="", "", COUNTIFS(B$2:B, "="&B2:B, D$2:D, <"&D2:D)+1))}
我不是在寻找另一个 Arrayformula 作为解决方案。 我想知道我的 ArrayFormula 出了什么问题?我该如何纠正?
我试图找出我自己的 ArrayFormula 但它不起作用:
我得到了每个单元格的公式:=RANK($D2,FILTER($D$2:$D, $B$2:$B=$B2),1)
我发现 Filter 不适用于 ArrayFormula,所以我不得不采取不同的方法。
我从之前的 question answer(H3 的 Arrayformula)那里得到了帮助,这很相似,因为在这两种情况下,每个单元格 FILTER 公式都返回超过 1 个值。 (其实是player0回答的)
使用相同的技术,我想出了这个绝对有效的公式:
=RANK($D2, ARRAYFORMULA(TRANSPOSE(SPLIT(VLOOKUP($B2, SUBSTITUTE(TRIM(SPLIT(FLATTEN(QUERY(QUERY({$B:$B&"×", $D:$D}, "SELECT MAX(Col2) WHERE Col2 IS NOT NULL GROUP BY Col2 PIVOT Col1", 1),, 9^9)), "×")), " ", ","), 2, 0), ","))), 1)
现在,当我尝试将其转换为 ArrayFormula 时: ($D2 到 $D2:$D & $B2 到 $B2:$B)
=ARRAYFORMULA(RANK($D2:$D,TRANSPOSE(SPLIT(VLOOKUP($B2:$B, SUBSTITUTE(TRIM(SPLIT(FLATTEN(QUERY(QUERY({$B:$B&"×", $D:$D}, "SELECT MAX(Col2) WHERE Col2 IS NOT NULL GROUP BY Col2 PIVOT Col1", 1),, 9^9)), "×")), " ", ","), 2, 0), ",")), 1))
它给了我一个错误“在 VLOOKUP 评估中找不到值''”,当我将 $B2 更改为 $B2:$B 时,我发现问题仅在 VLOOKUP 中。
我确定 VLOOKUP 可以与 ArrayFormula 一起使用,但我不明白我的公式哪里出错了!请帮我纠正我的 ArrayFormula。
【问题讨论】:
-
我已经在我的问题中提到了相同的公式。我明白了,我会说得更清楚。很抱歉浪费您的时间!
-
您指的是我的哪个公式(您认为当以任何方式对行进行处理时,该公式不起作用)?
标签: google-sheets google-sheets-formula array-formulas