我曾试图查看此问题是否曾被提出过,但我似乎无法找到答案。
我有一列单元格(> 3000行),值为1或0(调用此列A)。该值将取决于B列中的值(包含值或不包含值)。 B列中的值是基于SUMIFS函数,从C列求和,并基于D列中的月份。
B中的值是在下个月的第一个工作日支付的。因此,SUMIFS函数将计算与上个月匹配的日期。这在理论上很有效,但并非每个第一个工作日都是本月的第一天。这导致SUMIFS功能不包括正确月份中的所有内容,并允许一些差异,当你处理人们的钱时,这并不是很好。此外,这种差异在多个时期内是复合的(在某些情况下,有超过100个时期,第1期的1美元差异相当于100期内的近1000美元)
我想知道的是:
当A列中的值为0时,有什么方法可以告诉SUMIFS功能(B列)停止?这将告诉SUM函数从列B中的当前值开始求和,并将函数继续到列B中前一个值之下的单元格。
我已经看到MATCH功能可能有效的建议,但是我无法看到如何使用COUNT或SUM执行此操作。
出于安全原因,此解决方案需要输入到单元格中,而不能是VBA。此外,它不能太大,因为它需要在工作簿中的200个工作表中复制(最初不是我的文件,我会以不同的方式完成,但这是另一个故事)。如果需要,可以输入另一列或两列。
感谢任何帮助。
编辑:
不幸的是,我无法发布截图的图片。我在这里包含了一个类似的截图(列不是相同的布局,但希望它给出了这个想法):
SUMIF公式为(对于B2)
= SUMIFS(C2:C35,D2:D35,D2-1,A2:A35,1)
如果我想要月中的所有值,与付款的时间无关,这样可以正常工作。
但是,我需要的公式是:
SUM(C2:C35,D2:D35,D2-1,但在A2:A35遇到第一个0时停止)
由于
答案 0 :(得分:2)
INDEX function可以提供有效的单元格引用,以便停止使用MATCH function在 0 上找到完全匹配。
这个公式有点猜测,因为没有可供参考的样本数据,但我相信我已经理解了你的参数。
=SUMIFS(C2:index(C2:C35, match(0, A2:A35, 0)), D2:index(D2:D35, match(0, A2:A35, 0)), D2-1)
这似乎是独立的,不会被填满,所以我根据你的样本留下了相对的单元格地址。