嘗試在 Excel 中按日曆季度排序和計數數據

嘗試在 Excel 中按日曆季度排序和計數數據

我正在嘗試在 Excel 中設定一個公式,該公式將查看 c7:c30 中指定日期的一系列數據,以及 L7:L30 中的“活動”-“A”和“已完成”-“C”類別。我試圖讓 Excel 單獨查看每一行,並比較日期是否在 1/1/12 (B38) 和 3/31/12 (C38)(一年的第一季)指定的季度日期之間,如果滿足此條件,然後對標有“A”的活動進行計數。

我提出了以下不起作用的方法,因為它只查看指定的第一個日期,併計算所有標有“A”的日期(如果第一個日期與第一季的規格相符)。

{=(IF(($C$7:$C30>=$B$39)*($C$7:C$30<=$C$39),COUNTIF($L$7:$L30,"a"),0)) }

請幫我弄清楚這個公式有什麼問題,它不會單獨查看每一行,而是如果第一個日期與所提供的 if 語句相符,則計算所有用 A 指示的日期。

抱歉,不太擅長 Excel,非常感謝您的幫助。

謝謝!

答案1

我認為您建立數組公式的方式可能有問題。只需解壓縮您的語句,您將建立一個包含盡可能多行的數組,如果滿足日期條件,則每行包含 COUNTIF($L$7:$L30,"a") 的結果,或 0。

由於您沒有應用任何計數函數來包裝整個數組,因此該函數將返回整個數組,但您只會看到單元格中的第一個結果,這就是為什麼它似乎完全由一個單元格控制。

解決這個問題的另一種方法如下:

您的三個測試(每行)是:

  • 日期 >= B38
  • 日期 <= C38
  • 條件=“a”

你只想計算這三個都正確的地方。

很方便,真值的計算結果為 1,假值的計算結果為 0,因此我們可以使用乘法運算來得到您想要的結果。

因此,對於單行,您需要執行以下操作

(C7 >= B38) * (C7 <= C38) * (L7="a")

(顯然,將其擴展到 C7:C30 等以涵蓋您感興趣的行)

然後,要將其折疊為單一值,您需要將整個資料包裝在 SUM() 語句中,該語句將僅遍歷列表並將所有值加在一起。

SUM( (C7:C30>B39) * (C7:C30<=C39) * (L7:L30="a") )

另外,如果您想看看,請返回原始公式,並用 sum() 語句將其包裝起來,您將得到顯示為狀態設定為「a」的次數的結果,乘以滿足日期條件的行數。

(注意:數組公式​​一開始有點讓人頭疼,但是一旦你了解它們,它們就可以很好地工作。我最初在以下位置閱讀它們:http://www.cpearson.com/excel/ArrayFormulas.aspx如果仍然令人困惑的話,這仍然是一個很好的解釋..)

相關內容