excel 带索引和匹配的Sumifs

bnlyeluc  于 2022-12-19  发布在  其他
关注(0)|答案(2)|浏览(260)

我有两张床单(表1和表2),包含大量数据,我必须根据标准求和(B列中的行项目),因为这是两个工作表中唯一匹配的列。如何解决此问题?我使用了以下公式,但它给了我一个错误。在工作表2中,借助公式,我需要总结的基础上行项目和拖动它下来。有人可以请帮助?

=SUMIFS(INDEX(Sheet1!C2:E10,MATCH(B2,Sheet1!B2:B10,0)),Sheet1!C2:E10,B2)

表1:
| 损益|行项目|一月|二月|三月|
| - ------| - ------| - ------| - ------| - ------|
| 客户销售|小行星5001|小行星5340|小行星2369|小行星1265|
| 公司间销售|小行星5001|一四五二|小行星6589|小行星7895|
| 报废销售|小行星5210|四五八|八十七|九十八|
| 进货运费|六千|四五七|八四五|九八六|
| 职责|六千|四百七十八|九八六|八九六|
| 薪金|小行星875|四五七|八五四|三百二十五|
| 办公用品|6300|七八九|八五四|六五一|
| 材料|6300|三五四|四十五|九十八|
| 办公室 scrapy |6300|四百五十二|二百五十八|六五四|
表2:
| 损益|行项目|一月|二月|三月|
| - ------| - ------| - ------| - ------| - ------|
| 销售额|小行星5001|小行星6792|||
| 报废|小行星5210||||
| 用品|6300||||
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |

=SUMIFS(INDEX(Sheet1!C2:E10,MATCH(B2,Sheet1!B2:B10,0)),Sheet1!C2:E10,B2)
kdfy810k

kdfy810k1#

您可以使用SUMPRODUCT结合一元运算符和MATCH来获得以下结果:

单元格K2中的公式为:

=SUMPRODUCT(--($B$2:$B$10=$J2)*--(COLUMN($C$2:$E$10)=MATCH(K$1,$C$1:$E$1,0)+2)*$C$2:$E$10)

向右向下拖动即可
SUMPRODUCT and Double Unary Operators
请注意,此公式将MATCH与+2组合在一起。之所以使用+2,是因为COLUMN函数返回的是绝对列号,而MATCH仅对选定内容起作用。由于月份从列C(第三列)开始,因此需要加上2,以使COLUMN和MATCH在相同的引用中起作用。如果月份从列E开始,则为+4,列F为+5,依此类推。

7ivaypg9

7ivaypg92#

假设您数据从A1开始,

=LAMBDA(KEYS,DATA,ITEMS,MONTHS,
 MAKEARRAY(COUNTA(ITEMS),COUNTA(MONTHS),LAMBDA(ROW,COL,
  SUM(FILTER(INDEX(DATA,,COL),KEYS=INDEX(ITEMS,ROW),0))
 ))
)(B2:B10,C2:E10,G2:G6,H1:J1)

1.使用LAMBDA()命名您正在处理的范围,
1.使用MAKEARRAY()定义ROWCOL索引,

  1. FILTER()根据ITEMSDATA
  2. SUM()FILTER()的结果。
    如果您不熟悉数组公式,也可以使用以下公式:
=SUM(FILTER(C$2:C$10,$G2=$B$2:$B$10,0))

把它放进H2(我的例子),从左到右,从上到下,也应该可以。

相关问题