[英]EXCEL: SUMIFS criterion applied to a INDEX MATCH search equals a value
我花了幾乎一整天的時間試圖弄清楚這一點。 我在這里和其他各種網站上閱讀了很多主題。 這就是我想要做的:
我有總銷售額 output。 它很大,上面的項目數量取決於它查看的時間范圍。 系統中存在重大缺陷,我無法按地區獲得數據。 該信息不存儲在系統中。 記錄僅存儲客戶姓名、產品信息、單位數量、價格和購買日期。 我想獲得按地區銷售的每件商品的總數,以便我可以比較不同地區的商品受歡迎程度。
只有大約 50 個客戶,所以我可以創建一個單獨的表來為客戶分配一個區域。
所以,我有三張表: 表 1:銷售
+-----------------------------------------------------+ |Customer Name | Product | Amount | Price | Date | ------------------------------------------------------- | Joe's Fish | RT-01 | 7 | 5.45 | 2020/5/20 | ------------------------------------------------------- | Joe's Fish | CB-23 | 17 | 0.55 | 2020/5/20 | ------------------------------------------------------- | Mack's Bugs | RT-01 | 4 | 4.45 | 2020/4/20 | ------------------------------------------------------- | Joe's Fish | VX-28 | 1 | 1.20 | 2020/5/13 | ------------------------------------------------------- | Karen's \/ | RT-01 | 9 | 3.45 | 2020/3/20 | +-----------------------------------------------------+
表 2:地區
+----------------------+ | Customer | Region | ------------------------ | Joe's Fish | NA | ------------------------ | Mack's Bugs | NA | ------------------------ | Karen's \/ | EU | +----------------------+
我的結果在表 3 中:
+----------------------+ | | NA | EU | ------------------------ | RT-01 | 11 | 9 | +----------------------+
所以看看我為這個問題補的數據,我想比較一下在北美銷售的 RW-01 和在歐洲銷售的數量。 如果我在銷售表的末尾添加一個 INDEX MATCH 列,我可以做到這一點,但每次更新銷售信息時我都必須這樣做。 有沒有辦法做一個像這樣的 SUMIFS:
SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,INDEX(Sheet2!$B:$B,MATCH(Sheet1!#Current A#,Sheet2!$A:$A))=Sheet3!$B2,Sheet1!$B:$B,Sheet3!$A3)?
我認為使用 SUMIFS 很難做到這一點,因為您匹配的列必須是范圍,但您當然可以使用 SUMPRODUCT 和 COUNTIFS 做到這一點:
=SUMPRODUCT(Sheet1!$C$2:$C$10*(Sheet1!$B$2:$B$10=$A2)*COUNTIFS(Sheet2!$A$2:$A$5,Sheet1!$A$2:$A$10,Sheet2!$B$2:$B$5,B$1))
我不建議使用全列引用,因為它可能會很慢。
順便說一句,我假設 Sheet2 中沒有針對客戶和區域的特定組合的重復項 - 如果有,您可以使用
=SUMPRODUCT(Sheet1!$C$2:$C$10*(Sheet1!$B$2:$B$10=$A2)*
(COUNTIFS(Sheet2!$A$2:$A$5,Sheet1!$A$2:$A$10,Sheet2!$B$2:$B$5,B$1)>0))
編輯
值得使用公式的動態版本,盡管它並不優雅:
=SUM(Sheet1!$C2:INDEX(Sheet1!$C:$C,MATCH(2,1/(Sheet1!$C:$C<>"")))*(Sheet1!$B2:INDEX(Sheet1!$B:$B,MATCH(2,1/(Sheet1!$B:$B<>"")))=$A2)*
(COUNTIFS(Sheet2!$A$2:INDEX(Sheet2!$A:$A,MATCH(2,1/(Sheet2!$A:$A<>""))),Sheet1!$A2:INDEX(Sheet1!$A:$A,MATCH(2,1/(Sheet1!$A:$A<>""))),Sheet2!$B$2:INDEX(Sheet2!$B:$B,MATCH(2,1/(Sheet2!$B:$B<>""))),B$1)>0))
由於您需要在 memory 中進行匹配,我認為在 Excel 中不可行,因此您必須使用 vba 字典。 另一方面,如果您的銷售表中的列數是固定的,您可以格式化為表格並在 F 中添加您的索引匹配。更新銷售數據時,刪除從第 3 行開始的所有行並復制粘貼更新值。 Excel 將自動對所有行應用索引匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.