2017-09-23 121 views
-2

(最后)EDIT3:查找最后最大值/替代最大值为ARRAYFORMULA

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

  1. 滤波器开始日期到当前日期,锻炼名称,代表<> 0。由降
  2. 排序权重最高,从而为第一行
  3. 指标的权重排

似乎运行得更快,还是要拖,因为过滤器不工作ARRAYFORMULA。只返回当天的最大值,技术上我希望有最大值达到该设定值(即,如果日期值更精细,我可以按分钟/秒过滤,但原始数据不具有该信息)。我想我可以制作另一列连续数字,以便为每一行给出一个比较顺序。

原题:

我建立一个锻炼记录,并试图找到每个练习的最后一个最大的权重值。公式我主要工作,但它很慢,因为它比较所有练习和加权当前单元格,并且工作表接近30000个条目。

所以,我想知道是否有一种方法来索引/匹配/排序,所以我可以得到它在一个单元格arrayformula工作,因为Max不工作在一个数组。就像找到以前发生的练习(B:B)一样,保持重量值较高的值(C:C)。

同样对于当前公式,如果reps = 0(某种AND IF D:D <> 0),我想保持以前的MAX权重。所以如果我不能执行一个代表(又名rep = 0),那么权重值不会被转入计算。行为以红色突出显示。这似乎与上面查找先前的最高价值方法有关,并将其作为错误条件。

样纸

谢谢你,失去理智试图找到“最后出现”的例子这项工作。

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

  1. 找到运动B的前一个条目:B,如果它不存在,maxE设置为当前weightC(设置第一最大)
  2. 如果以前exerciseB确实存在,然后找如果当前repD大于或等于1(即不为0)
  3. 当前weightC比较以前maxE并设置当前maxE到以较高者为准
  4. 其他(当当前repD小于1),将当前MaxE设置为先前的MaxE

编辑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现在,因为它的工作原理,以及谷歌表需要20分钟,通过现有的公式,主要是我希望找到一种方法来减少处理时间或避免使用MAX,因为它不适用于单个方程的阵列。

+0

多贴:https://webapps.stackexchange.com/questions/110233/finding-last-occurrence-of-value-in-column – pnuts

+0

@diggy,你的逻辑,' = ARRAYFORMULA(MAX(IF(B2 = B1,IF(D2> 0,MAX(C2,E1),E1),C2)))'并拖动填充,但这不起作用,因为有多个练习随机排列。 –

+0

@anonymous,感谢您的努力,请参阅编辑进度。简而言之,我认为我找到了让事情顺利进行的必要功能,但它在Google表格中不受支持。 – diggy

回答

0

尝试:

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

感谢您的输入,我没有试图找到最大值(当rep <> 0)对于整个范围的每个独特练习,但是从范围的开始到该特定的行的每行的锻炼的最大值(当rep <> 0时),即 重量:1,2,3,4,1,6 ,4,5 最大值:1,2,3,4,4,6,6,6 – diggy