在Excel中根据每行2个相邻单元格之间的另一个值进行求和

我有一个Excel电子表格,可以对select的账户进行直接借记分析,我有一个查找表"Sheet2" ,如图所示,其中将包含我需要的信息。

我感兴趣的表格有3个我感兴趣的栏目, amount和一个到期date。

Sheet1 B13我想在Sheet2:D5:D:100上做一个=sum() ,但只把它加到总数中,如果B1中的date在范围内。

我可以总结好列,甚至根据date使用-sumifs()总结一行,但不知道从哪里开始这个问题。 我想我会需要使用一个计数()或什么的?

我不一定是在寻找一个直接的答案,而是对autocalc的一个粗略的解释,所以我可以在将来轻松地做这种事情!

在这里输入图像说明

我想你最好使用数组公式混合你的总和。 就像是

 =SUM((B1>Sheet2!$D$5:$D$100)*(B1<Sheet2!$E$5:$E$100)*Sheet2!$C$5:$C$100) 

现在发生在这里的是几个部分:

  1. 第一组内部括号(B1> Sheet2!$ D $ 5:$ D $ 100)检查B1中的该date是否大于其他工作表中的第一个date。 这个评估为1为真,0为假。
  2. 第二组内支架(B1
  3. 如果两个条件都为真,则这些1或0值相乘仅为1。 所以第三部分是在datealignment的时候进行的,并且计算总和。
  4. 此公式是一个数组公式,因为每个这些操作都应用于您定义范围内的每一行

要在Excel中input数组公式,必须使用CTRL + SHIFT + ENTERinput公式。 公式周围会出现大括号{}。 它会看起来像

 {=SUM((B1>Sheet2!$D$5:$D$100)*(B1<Sheet2!$E$5:$E$100)*Sheet2!$C$5:$C$100)} 

如果它工作。 只是评论,如果你不能得到它,我会帮你。

简单的旧sumifs?

  ABC 1 2013-03-14 2 6 2013-01-01 2013-01-02 3 8 2013-03-12 2013-03-23 4 5 2013-05-21 2013-06-01 =SUMIFS(A2:A4;B2:B4;CONCATENATE("<=";B1);C2:C4;CONCATENATE(">=";B1)) 

假设你有几个date,你需要通过这个总和(从C1的第一部分开始),我会用三种方法之一进行设置。

使用带额外列的额外工作表,其中为sheet1中的每个date计算dateLowerBound <date <dateUpperBound,并将SUMIF与该额外列用作关键字。

使用DSUM ,它可以支持复合标准,但是它的语法似乎总是让我对考虑使用DSUM感到愤怒。

写一个VBmacros(假设表单的结构是合理的静态的,并且有明确定义的点可以重新计算一个Total,你可以将它挂到date单元格的onChanged事件和/或到Sheet2数据表区域。