(最后)EDIT3:
=指数(排序(过滤器(A:d,A:A&LT = DATEVALUE(A3),B:B = B3,d:d<&0),3,F假),1,3)
似乎工作得更快,仍然必须拖动,因为过滤器在arrayformula中不起作用。只返回足够的一天中的最大值,技术上我希望最大值达到那个集合(即如果日期值更精细,我可以按分钟/秒过滤,但原始数据没有该信息)。我想我可以创建另一列连续数字,为每一行提供一个比较顺序。
原始问题:
我正在构建一个练习记录器并试图找到每个练习的最后一个MAX权重值。我通常使用的公式,但它很慢,因为它比较所有练习和当前单元格的重量,并且表格有近30000个条目。
所以,我想知道是否有一种索引/匹配/排序的方法,所以我可以让它在一个单元格数组中工作,因为Max不能在数组中工作。比如先前发生的运动(B:B),保持较高的重量值(C:C)。
同样对于当前公式,如果reps = 0(某种AND IF D:D< 0),我想保持先前的MAX权重。因此,如果我未能执行单个rep(也就是rep = 0),则权重值不会被转移到计算中。行为以红色突出显示。这似乎与上面找到的上一个最高值方法相关联,并将其作为错误条件插入。
样本表
谢谢你,我试图找到有用的“最后一次”例子。
编辑:我脑中公式的逻辑似乎应该是
编辑2:
@anonymous,谢谢你的意见。
上面的公式比较
您的公式(F列)的行为与我的(D列和公式栏)非常相似,但有一些错误(突出显示为黄色)。总的来说,我能够检测到D<> 0(突出显示红色),但无法找到方法来确定Google表格中先前出现的组和相邻值的方法。但是,我发现在excel中工作的“反向”功能(图片如下),但不幸的是“= LOOKUP(2,1 /”在Google表格中无法正常处理,因此在Excel中,公式返回60,其中是正确的,在表格中,它将返回25。
Excel有效。它找到最后一次出现。
我现在要坚持使用Excel,因为它有效,Google表格需要20分钟才能完成现有公式。主要是我希望找到一种方法来减少处理时间或避免使用MAX,因为它在单个方程的数组中不兼容。
答案 0 :(得分:0)
尝试:
=QUERY(B:D,"Select B,max(C) where not D=0 and B is not null group by B")