返回列表 上一主題 發帖

[發問] 依每月最後的日期 加總

[發問] 依每月最後的日期 加總

Dear,
請問可以非陣列的一致性公式,統計三個客戶的個別數量嗎?
依A欄每月最後的日期(不一定是月底,只抓每月最後一個日期)
分別統計C欄 三個客戶數量
1) 大
2) 美
3) 佳
C欄若有其他字,則

依A欄每月最後的日期_分別統計數量.rar (11.62 KB)

回復 1# PJChen
這樣的結果可以嗎?
請參考!

ref.zip (12.89 KB)

TOP

回復 1# PJChen
修正!
2019/12/31與2020/1/31有非單筆客戶
請參考!

ref_修正.zip (12.79 KB)

TOP

D2 =IF(SUMPRODUCT((TEXT(A2,"yyyymm")=TEXT(A3:A33,"yyyymm"))*(C2=C3:C33))=0,
SUMPRODUCT(B$2:B2,(TEXT(A2,"yyyymm")=TEXT(A$2:A2,"yyyymm"))*(C2=C$2:C2)),"")

下拉複製
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 4# ML089


    您的解法讓我大開眼界,佩服!!

TOP

D2{=IF(MAX((MONTH(A$2:A$146)=MONTH(A2))*(C$2:C$146=C2)*A$2:A$146)=A2,SUM((MONTH(A$2:A$146)=MONTH(A2))*(C$2:C$146=C2)*B$2:B$146),"")
隨意窩 "EXCEL迷"  blog  或 http://blog.xuite.net/hcm19522/twblog
已收集6200篇 EXCEL函數

TOP

回復 4# ML089
回復 6# hcm19522

感謝...這兩個解法都可以,
能否請教,我其他檔案也有不少是用陣列公式的,如果要像這樣直接打在VBA中,陣列公式要怎麼改才能用??
        xRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
            Range("D2:D" & xRow).Formula = "=IF(MAX((MONTH(A$2:A$146)=MONTH(A2))*(C$2:C$146=C2)*A$2:A$146)=A2,SUM((MONTH(A$2:A$146)=MONTH(A2))*(C$2:C$146=C2)*B$2:B$146),"")"
            Range("D2:D" & xRow).Value = Range("D2:D" & xRow).Value

TOP

回復 7# PJChen

我會建議第一列使用公式

VBA 在將第一列公式複製至下方區域,再將公式轉值

這樣就不用煩惱公式轉寫至VBA裡
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 8# ML089
這個公式很特別,請教TEXT(A3:A33....為什麼是33 ??
D2 =IF(SUMPRODUCT((TEXT(A2,"yyyymm")=TEXT(A3:A33,"yyyymm"))*(C2=C3:C33))=0,
SUMPRODUCT(B$2:B2,(TEXT(A2,"yyyymm")=TEXT(A$2:A2,"yyyymm"))*(C2=C$2:C2)),"")

TOP

回復  ML089
這個公式很特別,請教TEXT(A3:A33....為什麼是33 ??
D2 =IF(SUMPRODUCT((TEXT(A2,"yyyymm")= ...
PJChen 發表於 2020-3-11 19:29



    A3:A33 共有31格,表示一個月最多31天,讓公式比較儲存格計算可以少一點。
若資料很多時就可以看出公式效率
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 閒人無樂趣,忙人無是非。
返回列表 上一主題