【问题标题】:Finding the sum total of every third column between two dates in excel在excel中查找两个日期之间每第三列的总和
【发布时间】:2014-07-24 01:58:27
【问题描述】:

我正在尝试进行某种表格设置,但我刚开始时并没有意识到这将是一个糟糕的设置。我的许多同事已经在使用它,但我需要帮助为我的 excel 制作公式。

我和试图结合:

SUMPRODUCT(A3:Q3,--(MOD(COLUMN(A3:Q3),3)=0))

这是获得第三列的总和:

=SUMIFS(A3:Q3,A1:Q1,">="&F1+1,A1:Q1,"<="&Q1)

我试图在哪里找到两个日期之间的总和。

我没有太多的 excel 数学知识,而且我似乎无法让它工作。有什么帮助吗?我是新手,太抱歉了。

【问题讨论】:

  • 想帮助你,但很难理解你想要什么。您已将其标记为 VBA - 您是否希望编写自己的自定义函数,可以部署在工作表单元格中,或者您是否正在寻找一位聪明的公式作者(我不是其中之一)
  • 要么给我,要么给我。我只是想做到这一点,这样我就可以在 Excel 表中的两个日期之间获得每第三列的总和。对不起,如果我对我的描述模棱两可。
  • 每第三列求和两个日期之间的值?您是对日期求和(即您希望将日期加在一起)还是对数值求和 - 您似乎在第 3 行搜索值,但在第 1 行搜索日期?
  • 在两个设定日期之间的一行中每隔第三列获取一个单元格,并将它们全部加起来为一个值。

标签: excel function vba date sum


【解决方案1】:

我和试图结合:

SUMPRODUCT(A3:Q3,--(MOD(COLUMN(A3:Q3),3)=0))

这是获得第三列的总和:

   =SUMIFS(A3:Q3,A1:Q1,">="&F1+1,A1:Q1,"<="&Q1)

要结合这些,只需在SUMPRODUCT 末尾添加额外的要求作为附加数组,例如:

=SUMPRODUCT(A3:Q3,--(MOD(COLUMN(A3:Q3),3)=0),--(A1:Q1>=(F1+1)),--(A1:Q1<=Q1))

【讨论】:

    【解决方案2】:

    此自定义函数将执行您想要的操作。它说明了任何情况下的基本方法。通过按 Alt+F11 打开 VBA 编辑器 (VBIDE),通过右键单击编辑器中的“模块”文件夹创建一个新模块(使用视图菜单确保项目资源管理器已打开),然后复制并粘贴以下内容你应该自己调试它,这样你就可以通过设置断点或创建一个调用子(底部的示例)来查看它在做什么,这样你就可以使用 F8 单步执行它

    Option Explicit
    
    
    Public Function THIRDCOLUMNDATESUM(ByVal colStart As Long, ByVal colEnd As Long, _
     ByVal DateMin As Date, ByVal DateMax As Date) As Double
    
     'returns a long sum of the numerical values in row three of every third column
     'it checks to ensure that the date (at the top of the column) is between
     'the two passed dates (DateMin and DateMax)
    
    'Allocate for a long counter and a Double sum (in case you are working with decimals)
    Dim i As Long, sum As Double
    
    'for each column between colStart and colEnd
    For i = colStart To colEnd
        'if it's the first column, or in a column divisible by three with no remainder
        If (i = 1) Or (i Mod 3 = 0) Then
            'And the date in the column header (row 1) is between (but not equal to)
            'DateMin and DateMax
            If ActiveSheet.Cells(1, i) > DateMin And ActiveSheet.Cells(1, i) < DateMax Then
                'add the numerical value in row 3 of that column to the sum
                sum = sum + ActiveSheet.Cells(3, i).Value
            End If
        End If
    'next column
    Next i
    
    THIRDCOLUMNDATESUM = sum
    
    End Function
    

    示例测试子

    Sub Test()
    
    THIRDCOLUMNDATESUM 1, 18, "15/1/1950", "15/01/2015"
    
    End Sub
    

    您只需键入以下内容即可在工作表单元格中使用它:

    =THIRDCOLUMNDATESUM(1, 21, A1, F1)

    假设您想要的日期在单元格 A1 和 F1 中,并且您只想查看 A - U 列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 2023-02-10
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      相关资源
      最近更新 更多