在Excel电子表格中基于当前日期的单元格总数

时间:2009-07-08 22:46:36

标签: excel excel-formula

我有一个这样的电子表格:

date | 7/1 | 7/2 | 7/3 | 7/4
-----|-----|-----|-----|-----
 val |  3  |  5  |  1  |  3  
-----|-----|-----|-----|-----

我想总结一下val行,但只能到当前日期。因此,如果今天是7/3,那么总和将是3 + 5 + 1 = 9。如果今天是7/4,那将是12。

我想出了这个以获得列数:

=YEARFRAC(B1,TODAY())*360  // B1 is the first date -- 7/1

但我无法弄清楚如何告诉excel做总和:

=SUM(B2:<B+num cols above>2)

据推测它与引用和查找有关,但我并不熟悉这些工作方式......

4 个答案:

答案 0 :(得分:11)

您可以使用SUMIF:

=SUMIF(A1:E1,"<="&TODAY(),A2:E2)

假设您的日期在a1:e1,而您的值在a2:e2。

答案 1 :(得分:0)

OFFSET function应该完成这项工作。有一个类似的问题here。如果不知道桌子的确切布局,我猜你的公式看起来像是:

=SUM(OFFSET(B2,0,0,1,DAY(TODAY()))) 

DAY(TODAY())返回当月的日期。然后将此数字用作OFFSET中SUM的范围宽度。

我希望相对清楚。祝你好运。

答案 2 :(得分:0)

将此VBA放入模块

Option Explicit

Public Function GetTotal(StartCell As Range) As Integer 
    Dim i As Integer, j As Integer

    i = StartCell.Row
    j = StartCell.Column

    If Cells(i, j) > Date Then
        GetTotal = 0
        Exit Function
    End If

    While Cells(i, j) <> DateAdd("d", 1, Date) 'values up to an including today'
        GetTotal = GetTotal + Cells(i + 1, j)
        j = j + 1
    Wend

End Function

然后通过插入

在工作表单元格中使用它
=GetTotal([starting date cell])

其中[starting date cell]是具有您想要总和的日期的单元格。工作表单元格的值将是总和

答案 3 :(得分:0)

有三种方法可以获得日期之间的值之和。

  1. 使用sumifs

    = SUMIFS(B2:B15,A2:A15, “&GT; =” &安培; F3,A2:A15, “&LT =” &安培; F4)

  2. 使用sumproduct

    = SUMPRODUCT((A2:A15&GT = F3)*(A2:A15&LT = F4),B2:B15)

  3. 使用偏移量

    = SUM(OFFSET(B1,MATCH(F3,A2:A15,0),0,MATCH(F4,A2:A15,0)-match(F3,A2:A15,0)+1,1))

  4. 如果日期范围在A列中,则val范围在B列中。

    enter image description here

    enter image description here