2017-09-23 324 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