查找Max for Arrayformula的最后一个Max值/替代

时间:2017-09-23 02:43:21

标签: google-sheets

(最后)EDIT3:

=指数(排序(过滤器(A:d,A:A&LT = DATEVALUE(A3),B:B = B3,d:d<&0),3,F假),1,3)

  1. 过滤开始日期到当前日期,练习名称,代表<> 0。
  2. 按权重降低排序,因此最高的是第一行
  3. 指数权重行
  4. 似乎工作得更快,仍然必须拖动,因为过滤器在arrayformula中不起作用。只返回足够的一天中的最大值,技术上我希望最大值达到那个集合(即如果日期值更精细,我可以按分钟/秒过滤,但原始数据没有该信息)。我想我可以创建另一列连续数字,为每一行提供一个比较顺序。

    原始问题:

    我正在构建一个练习记录器并试图找到每个练习的最后一个MAX权重值。我通常使用的公式,但它很慢,因为它比较所有练习和当前单元格的重量,并且表格有近30000个条目。

    所以,我想知道是否有一种索引/匹配/排序的方法,所以我可以让它在一个单元格数组中工作,因为Max不能在数组中工作。比如先前发生的运动(B:B),保持较高的重量值(C:C)。

    同样对于当前公式,如果reps = 0(某种AND IF D:D< 0),我想保持先前的MAX权重。因此,如果我未能执行单个rep(也就是rep = 0),则权重值不会被转移到计算中。行为以红色突出显示。这似乎与上面找到的上一个最高值方法相关联,并将其作为错误条件插入。

    样本表

    谢谢你,我试图找到有用的“最后一次”例子。

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

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

      @anonymous,谢谢你的意见。

      enter image description here

      上面的公式比较

      您的公式(F列)的行为与我的(D列和公式栏)非常相似,但有一些错误(突出显示为黄色)。总的来说,我能够检测到D<> 0(突出显示红色),但无法找到方法来确定Google表格中先前出现的组和相邻值的方法。但是,我发现在excel中工作的“反向”功能(图片如下),但不幸的是“= LOOKUP(2,1 /”在Google表格中无法正常处理,因此在Excel中,公式返回60,其中是正确的,在表格中,它将返回25。

      enter image description here

      Excel有效。它找到最后一次出现。

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

1 个答案:

答案 0 :(得分:0)

尝试:

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