数组,SUM + INDEX/MATCH
Arrays, SUM + INDEX/MATCH
注意:试过 Excel 和 Google 表格,但我更喜欢表格。
基本上我想使用 INDEX
和 MATCH
获取一组数据的总和(因为参数将取决于下拉菜单):
期望的结果是:
所以这需要一些东西:
- Converting the cell D13(April) to a Month
- Converting the "weekof" column to a Month
- Using INDEX and MATCH and MATCH again, I'm assuming because it's multiple cell references.
这是我目前的解决方案:
=SUM(INDEX(D5:I9, MATCH(MONTH(D13&1),ARRAYFORMULA(MONTH(C5:C9)),0), MATCH(E12,D4:I4,0)))
这个returns最近的值:
270
而不是:
804
为什么这个值?
270+500+34 = 804
如果你对INDEX和MATCH的使用不是很严格,可以采用以下解决方案:
添加额外的列名称“月”,此列将使用 TEXT 函数从日期列中提取月份名称,如下所示:
=IF(C3<>"",TEXT(C3,"mmmm"),"")
if 语句确保只有填充的日期才会有月份值,因为对于一定数量的单元格,您必须使用上述公式填充此列。
现在您可以在单元格 E13 中或任何您想要的地方简单地使用 SUMIF 函数:
=SUMIF(B:B,D13,D:D)
如果您不希望“月份”列出现在您的数据中 table,您可以将其放在 table 的末尾并隐藏它。
您可以使用数据透视表 table 并按年和月对日期进行分组。
您可以直接使用 FILTER
然后 SUM
结果来简化您的公式:
公式:
=SUM(FILTER(D:D, TEXT(C:C,"MMMM") = E13))
输出:
更新:
- 上面的公式也应该在下拉值时更新。 Dropdown 只是可以用预定值更改的数据,除此之外,使用普通单元格时应该是相同的。
- 要匹配列,请将
MATCH
和 INDEX
与上述公式一起使用。请参阅下面的修改公式。
- 注意循环依赖。确保您的范围不会干扰您放置公式的实际单元格。
列匹配:
=SUM(INDEX(FILTER(D:E, TEXT(C:C, "MMMM") = E13),,MATCH(F12, D4:4, 0)))
注意:试过 Excel 和 Google 表格,但我更喜欢表格。
基本上我想使用 INDEX
和 MATCH
获取一组数据的总和(因为参数将取决于下拉菜单):
期望的结果是:
所以这需要一些东西:
- Converting the cell D13(April) to a Month
- Converting the "weekof" column to a Month
- Using INDEX and MATCH and MATCH again, I'm assuming because it's multiple cell references.
这是我目前的解决方案:
=SUM(INDEX(D5:I9, MATCH(MONTH(D13&1),ARRAYFORMULA(MONTH(C5:C9)),0), MATCH(E12,D4:I4,0)))
这个returns最近的值:
270
而不是:
804
为什么这个值?
270+500+34 = 804
如果你对INDEX和MATCH的使用不是很严格,可以采用以下解决方案:
添加额外的列名称“月”,此列将使用 TEXT 函数从日期列中提取月份名称,如下所示:
=IF(C3<>"",TEXT(C3,"mmmm"),"")
if 语句确保只有填充的日期才会有月份值,因为对于一定数量的单元格,您必须使用上述公式填充此列。
现在您可以在单元格 E13 中或任何您想要的地方简单地使用 SUMIF 函数:
=SUMIF(B:B,D13,D:D)
您可以使用数据透视表 table 并按年和月对日期进行分组。
您可以直接使用 FILTER
然后 SUM
结果来简化您的公式:
公式:
=SUM(FILTER(D:D, TEXT(C:C,"MMMM") = E13))
输出:
更新:
- 上面的公式也应该在下拉值时更新。 Dropdown 只是可以用预定值更改的数据,除此之外,使用普通单元格时应该是相同的。
- 要匹配列,请将
MATCH
和INDEX
与上述公式一起使用。请参阅下面的修改公式。 - 注意循环依赖。确保您的范围不会干扰您放置公式的实际单元格。
列匹配:
=SUM(INDEX(FILTER(D:E, TEXT(C:C, "MMMM") = E13),,MATCH(F12, D4:4, 0)))