我在谷歌表格中遇到了這個公式的問題。我想在兩個日期限制之間找到最大值左邊的單元格中的日期,但它目前是把包含最大值的兩個單元格的日期加在一起,我怎樣才能讓它只使用其中一個日期呢?我已經嘗試了索引和匹配,但我想不出來。我在下面的單元格中復制了公式,并在圖片中顯示了參考的單元格。如果有人能提供幫助,我將非常感激。謝謝。
單元格B9公式:=ArrayFormula(MAX(IF((A2:A5<=$B$8)*(A2:A5>=$B$7),B2:B5,"))
單元格B10公式:=SUMIFS(A2:A5,A2:A5, ">="&$B$7, A2:A5, "<="&$B$8, B2:B5, "="&B9)
uj5u.com熱心網友回復:
在B10中
=query(A2:B5, "select A where A<=DATE'"&TEXT(B8, "yyyy-MM-dd")&"' and A>=DATE'"&TEXT(B7, "yyyy-MM-dd")& "' order by B desc limit 1",0)
解說
select A where A<=DATE'"&TEXT(B8, "yyyy-MM-dd")&"' and A>=DATE'"&TEXT(B7, "yyyy-MM-dd")&"'選擇起始日期和結束日期之間的所有日期并創建一個陣列order by B desc按照B值的降序對結果集進行排序LIMIT 1將結果限制為只有一個專案uj5u.com熱心網友回復:
就像Harun24Hr說的那樣,FILTER和QUERY是你的朋友。
最大值公式。
最大值公式如下:
=MAX(FILTER(B2:B,A2:A >= C2, A2:A <= D2))
如果我為了可讀性,用命名的范圍來代替這些范圍,那就是:
=MAX(FILTER(B2:B,A2:A <=C2))
=MAX(FILTER( values, dates >= start_date, dates <= end_date))
Max的解釋
max公式將確定并回傳一個陣列的最大值。MAX( array )
過濾器解釋
過濾器函式將回傳陣列的最大值。
過濾器函式將回傳一個符合標準的數值陣列。我們在MAX中的陣列欄位中使用這個函式。
FILTER( array, condition1, condition2...etc)
最大值日期公式如下。
=INDEX(FILTER(A2:A,A2:A >= C2, A2:A <= D2),MATCH(F1,FILTER(B2:B,A2:A >= C2, A2:A <= D2),0),1)
如果我為了可讀性而用命名的范圍來代替這些范圍的話,那就是:
=INDEX(FILTER( dates, dates >= start_date, dates <= end_dates), MATCH(max_value, FILTER( values ,dates >= start_date, dates <= end_date),0),1)
索引的解釋
索引函式將回傳一個陣列中位于輸入的行和列的值。INDEX(range, row, column).過濾器1解釋
第一個過濾器函式將回傳一個介于最小值和最大值之間的日期串列,我們在索引函式中使用這個范圍。"匹配 "解釋
匹配函式回傳它在給定陣列中找到的第一個位置的值。我們給它的值是最大值欄位的輸出。因此,它正在尋找給定陣列中的最大值 MATCH(value, array, is_sorted).。過濾器2解釋
第二個過濾器函式正在做過濾器函式在最大值領域所做的事情。它正在回傳一個介于日期之間的值的串列。當匹配器在串列中搜索這個值時,它將有一個索引,以向索引函式提供最大值的日期位置。拖曳值的解釋
索引函式末尾的1是可選的,它指示索引函式我們正在尋找我們給它的陣列的第一列,但因為我們給它一個一維陣列,我們已經默認在尋找第一列。這完全是可選的,而且純粹是基于偏好。匹配公式末尾的0是為了表明資料沒有被排序。而且我們希望準確的值被匹配。這不是匹配函式的默認行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323599.html
標籤:


