使用 countif 以编程方式创建列表

Creating a list programatilly using countif

我有一件 Sheet 杂货,购买时间和价格。

我正在尝试创建一个新列表,programatilly,它在第一个列表中搜索给定时间段内每次购买某件商品以及在该商品上花费的总金额。

原始数据:

A       B       C
Item    Date    Price
Cheese  20/08   16,60
Bacon   20/08   8,35
Chicken 20/08   10,90
Butter  20/08   7,99
Tea     20/08   3,75
Bread   20/08   4,89
Bread   21/08   4,50
Milk    21/08   8

第二个列表:

E           F
Item        Total
(formula 1) (formula 2)

公式 1 : =INDEX(A2:A;MATCH(0;COUNTIFS($E:E1;A2:A);0))

公式2:=sumifs(C:C;A:A;E2;B:B;CONCAT(">=";INDIRECT("I1"));B:B;CONCAT("<=";INDIRECT("I2")))

其中,

I1:开始日期

I2:结束日期

如果我将日期设置为从数据开始 (20/08) 到结束 (21/08),这会很好用

E       F
Item    Total
Cheese  ,60
Bacon   ,35
Chicken ,90
Butter  ,99
Tea     ,75
Bread   ,39
Milk    ,00

但如果我将开始日期和结束日期设置为 21/08。它在 F 列中显示了一堆零。这就是我要解决的问题。

E       F
Item    Total
Cheese  [=13=],00
Bacon   [=13=],00
Chicken [=13=],00
Butter  [=13=],00
Tea     [=13=],00
Bread   ,50
Milk    ,00

我想要的是这样显示:

E       F
Item    Total
Bread   ,50
Milk    ,00

我尝试将公式 1 修改为

=INDEX(A2:A;MATCH(0;COUNTIFS($E:E1;A2:A;B:B;CONCAT(">=";INDIRECT("I1"));B:B;CONCAT("<=";INDIRECT("I2")));0))

但我收到#VALUE 错误(“COUNTIFS 的数组参数大小不同”)

要获得具有日期限制的唯一项目列表,请使用公式:

=INDEX($A:$A;MATCH(1;(COUNTIF($E:E1;$A:$A)=0)*($B:$B>=$I)*($B:$B<=$I);0))

要获取金额,请使用公式:

=SUMPRODUCT((E2=$A:$A)*($B:$B>=$I)*($B:$B<=$I)*$C:$C)

如果要消除 #N/A 错误,请对第一个公式使用 IFERROR,对第二个公式使用 IF(E2<>""; ..., "")