如果行和标题日期小于或等于特定日期,则将所有行和标题相加

时间:2019-04-12 05:13:36

标签: excel-formula

我有一个表格,其中日期作为行和列的标题-每个单元格将交易汇总,行中有起始日期,列中有清算日期。

例如

               31/1/2019    28/2/2019    31/3/2019
31/1/2019           -100         -200         -300
28/2/2019            -10          -20          -30
31/3/2019             -1           -2           -3

我想要一个公式,对列标题和行标题小于或等于特定日期的矩阵求和。

使用上面的示例:

31/1/2019 = -100
28/2/2019 = -330
31/3/2019 = -666

2 个答案:

答案 0 :(得分:0)

我已经尝试了一段时间来解决您对公式的要求,但是我无法这样做,因此我编写了一个小函数来作为公式工作。您需要输入以下代码:

Option Explicit
Function MySumIf(SumRange As Range, Criteria As Range) As Double

    Dim arr, i As Long, j As Integer

    arr = SumRange.Value
    For i = 2 To UBound(arr)
        For j = 2 To UBound(arr, 2)
            If arr(i, 1) <= Criteria.Value And arr(1, j) <= Criteria.Value Then MySumIf = MySumIf + arr(i, j)
        Next j
    Next i

End Function

在VBA内的模块上。你该怎么做?在您的excel上按ALT+F11,然后将用VBA弹出一个窗口->在左侧,您将看到一个名为Projects的窗口,在这里您用鼠标右键单击任何内容,然后插入->模块->粘贴代码出现在空白窗口中。

要使用此功能,只需像这样写=MySumIf(RangeToSumWithDates,DateCriteria)

Formula

结果是:

Result

希望有帮助。唯一的缺点是您需要共享此代码才能为其他人工作或共享工作簿。

答案 1 :(得分:0)

也许是这样的公式:

=IF(AND($A$2<=$A6,$B$1<=$A6),SUM($B$2:INDEX($B$2:$D$4,MATCH($A6,$A$2:$A$4,1),MATCH($A6,$B$1:$D$1,1))),0)

enter image description here

或稍作修改:

=IFERROR(SUM($B$2:INDEX($B$2:$D$4,MATCH($A6,$A$2:$A$4,1),MATCH($A6,$B$1:$D$1,1))),0)