簡體   English   中英

在 Google 表格中,如何檢查單元格 A(日期)是否在單元格 B 和 C 的日期范圍內

[英]In Google Sheets, how to check if Cell A (Date) is within the Date range of Cell B and C

我有一張帶有時間線的工作表,在 A 列中每行顯示一個月,在 B 列中顯示該月旁邊的美元金額。

我希望能夠在 G 列中指定金額,並在 E 和 F 列中指定該金額的開始和結束日期。

我想要實現的是,B列中的值是通過查看E列和F列中指定的開始日期和結束日期自動計算的,然后如果A列中的日期介於日期之間,則從G列中獲取相應的值在 E 和 F 中指定的范圍。

我在網上找到了許多針對類似問題的建議,但無法讓其中任何一個適用於我的具體案例。 非常歡迎任何幫助

您可以將其作為數組公式來執行,如下所示:

=ArrayFormula(mmult((text(indirect("A2:A"&count(A2:A)+1),"YYMM")>=text(TRANSPOSE(indirect("`E3:E"&count(E3:E)+2)),"YYMM"))*(text(indirect("A2:A"&count(A2:A)+1),"YYMM")<=text(transpose(indirect("F3:F"&count(F3:F)+2)),"YYMM"))*transpose(indirect("G3:G"&count(G3:G)+2)),(INDIRECT("G3:G"&count(G3:G)+2)+2)^0))

這個想法是開發一個二維數組,其中行是月份,列是匹配時間段的金額。 然后使用標准的 Mmult 方法來獲取數組的行總數。

對范圍使用間接會使公式更長,但使用全列引用會很慢,因為它會導致默認大小的工作表接近 1000 X 1000 數組。

在此處輸入圖像描述

編輯 1

或者更短

=ArrayFormula(mmult((text(indirect("A2:A"&count(A2:A)+1),"YYMM")>=text(TRANSPOSE(indirect("E3:E"&count(E3:E)+2)),"YYMM"))
*(text(indirect("A2:A"&count(A2:A)+1),"YYMM")<=text(transpose(indirect("F3:F"&count(F3:F)+2)),"YYMM"))
,INDIRECT("G3:G"&count(G3:G)+2)))

因為您可以將行總計步驟與 G 列相乘。

編輯 2

或者,您可以使用 SUMIFS 使用更簡單的下拉公式:

=ArrayFormula(sumifs(G$3:G,eomonth(E$3:E,-1)+1,"<="&A2,F$3:F,">="&A2))

這使用 Eomonth 將所有開始日期更改為當月的第一天,以便可以正確地將它們與 A 列中的日期進行比較。 由於 Eomonth 計算,公式仍然必須作為數組公式輸入。

筆記

與上面的原始數組公式等效的下拉公式將是

=ArrayFormula(sumifs(G$3:G,text(E$3:E,"YYMM"),"<="&text(A2,"YYMM"),text(F$3:F,"YYMM"),">="&text(A2,"YYMM")))

但這對所有行都為零 - 在撰寫本文時,原因對我來說並不明顯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM