我正在尝试根据下表中的索引匹配查找获取行的总和 月度表
我正在考虑根据我选择的日期更改行中的总和范围。例如,如果我在单元格下拉列表中选择 10 月 16 日,我将获得给定 6 位代码的 2016 年 10 个月的总数。康索尔
我正在尝试下面的公式,它可以给出行中前 10 个单元格的总和,而不管我选择的日期是什么。
=IFERROR(SUM(INDEX(INDIRECT(""&$C$3&"!C:C"),MATCH($A10,INDIRECT(""&$C$3&"!B:B"),0)):INDEX(INDIRECT(""&$C$3&"!C:Z"),MATCH($A10,INDIRECT(""&$C$3&"!B:B"),0),MONTH($C$2))),"")
非常感谢您的建议
答案1
您想要对数组中某一行的部分求和,其中日期小于或等于指定值。
首先,让我们弄清楚如何获取数组的一行。INDEX() 函数
INDEX(array, row_num, [col_num])
如果 col_num 设置为零,将返回整行。因此此函数
=INDEX(C9:O17,MATCH(403300,B9:B17,0),0))
返回数据中 Account(?) 为 403300 的行。您可以通过突出显示公式栏中的公式并键入 F9 来检查这一点。这将显示价值公式 - 403300 行的数据数组。
现在您只需将该行中月份小于或等于指定月份的部分加起来即可。 SUMIF()
就可以了。
SUMIF(range,criteria,[sum-range])
SUMIF() 检查指定范围(您的日期)是否符合条件(<= 您指定的月份),并对 sum_range(使用上面的 INDEX() 公式选择的行)中的相应单元格求和。将所有这些放在一起,并使用下面的模拟数据表,此公式
=SUMIF(C7:O7,"<="&$E$4,INDEX(C9:O17,MATCH($D$4,B9:B17,0),0))
G4 中的值给出了截至 E4 中的日期的 D4 中的帐户总额。
我把所有东西都放在一个工作表上,没有下拉列表,但您可以轻松添加这些功能。如果您确实需要使用下拉列表指定工作表,则必须使用大量 INDIRECT(),这会有点混乱。我想出了这个,其中工作表名称在 C4 中:
=SUMIF(INDIRECT(C4&"!"&"C7:O7"),"<="&E4,INDEX(INDIRECT(C4&"!"&"C9:O17"),MATCH(D4,INDIRECT(C4&"!"&"B9:B17"),0),0))
我希望这个帮助能祝你好运。