【问题标题】:Find last Max value / alternative to Max for Arrayformula查找 Arrayformula 的最后一个最大值/Max 的替代值
【发布时间】:2017-09-23 02:43:21
【问题描述】:

(最后)EDIT3:

=index(sort(filter(A:D,A:A0),3,f‌​alse),1,3)

  1. 筛选开始日期到当前日期、练习名称、代表 0.
  2. 按降序排列权重,第一行最高
  3. 指数权重行

似乎工作得更快,仍然需要拖动,因为过滤器在 arrayformula 中不起作用。只返回一天中的最大值就足够了,从技术上讲,我希望将最大值引导到该集合(即,如果日期值更好,我可以按分钟/秒过滤,但原始数据没有该信息)。我想我可以制作另一列序列号,为每一行指定一个比较顺序。

原问题:

我正在构建一个运动记录器,并试图找到每个运动的最后一个 MAX 重量值。我使用的公式大部分都有效,但是速度很慢,因为它比较了所有练习并加权了当前单元格,并且工作表有接近 30000 个条目。

所以,我想知道是否有一种方法来索引/匹配/排序,以便我可以让它在一个单元格数组公式中工作,因为 Max 在数组中不起作用。就像找到以前发生的运动(B:B)一样,保持体重值较高的值(C:C)。

对于当前的公式,如果 reps = 0(某种 AND IF D:D0),我想保留之前的 MAX weight。因此,如果我未能执行单个代表(又名代表 = 0),重量值不会被转移到计算中。行为以红色突出显示。这似乎与上述查找先前最高值的方法相关联,并将其作为错误条件插入。

样品表

谢谢你,我想找到“最后出现”的例子。

编辑:我大脑中公式的逻辑似乎应该是

  1. 找到之前的练习 B:B 条目,如果不存在,将 maxE 设置为当前 weightC(设置第一个最大值)
  2. 如果之前的练习B确实存在,则判断当前repD是否大于或等于1(即不为0)
  3. 比较当前 weightC 与之前的 maxE 并将当前 maxE 设置为较大的一个
  4. else(当当前repD小于1时),设置当前MaxE为前一个MaxE

编辑 2:

@anonymous,感谢您的意见。

上面的公式比较

您的公式(F 列)的行为与我所拥有的(D 列和公式栏中的)非常相似,但有一些错误(以黄色突出显示)。总体而言,我能够检测到 D0(突出显示红色),但无法找到一种方法来确定 Google 表格中先前出现的组和相邻值的方法。但是,我发现在 excel 中有效的“反向”函数(下图)但不幸的是“=LOOKUP(2,1/”在仍然自上而下处理的 Google 表格中不起作用。所以在 Excel 中,公式返回 60,这是正确的,在表格中,它将返回 25。

Excel 工作。它找到最后一次出现。

我现在将坚持使用 Excel,因为它可以工作,而且 Google 表格需要 20 分钟才能完成现有公式。主要是我希望找到一种方法来减少处理时间或避免使用 MAX,因为它在单个方程的数组中不兼容。

【问题讨论】:

  • @diggy,按照你的逻辑,=ARRAYFORMULA(MAX(IF(B2=B1,IF(D2<>0,MAX(C2,E1),E1), C2))) 并向下拖动填充,但这不起作用,因为有多个练习随机排列。
  • @anonymous,感谢您的努力,请查看编辑以了解进度。简而言之,我认为我找到了使事情正常运行的必要功能,但 Google 表格不支持它。
  • @diggy,AFAIK,Google 表格也支持 LOOKUP (2,1/... ) 方法。你可能想用ARRAYFORMULA (LOOKUP(2,... ))输入它
  • @diggy,Excel 也将仅采用自上而下的方法。它仍然会遍历所有值并到达最后一个值。此外,Google 表格中还有 SORT 功能。您可以对其进行反向排序并在必要时使用它。玩它。但是,如果你真的对数据进行排序,它会更好。我会在性能上有很大的提升
  • @anonymous,感谢您的建议,我有一个半工作功能,可以按练习名称/截至当前日期/代表 0 的条目进行过滤,按降序对输出进行排序,然后索引第一个匹配项值(应该是以前最大的权重0。它似乎处理得更快,几分钟而不是几十分钟,但仍然需要拖动。=index(sort(filter(A:D,A:A0),3,false),1,3)

标签: google-sheets


【解决方案1】:

试试:

=QUERY(B:D,"Select B,max(C) where not D=0 and B is not null group by B")

【讨论】:

  • 感谢您的输入,我不想为整个范围内的每个独特练习找到最大值(当 rep 0 时),而是为每一行的练习找到最大值(当 rep 0 时)从范围的开始,到特定的行。即重量:1、2、3、4、1、6、4、5 最大:1、2、3、4、4、6、6、6
猜你喜欢
  • 2022-11-25
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2023-01-26
  • 2018-06-19
  • 2015-04-22
  • 2018-10-26
相关资源
最近更新 更多