【问题标题】:Sum of Multiple Cells Between Date Range日期范围之间多个单元格的总和
【发布时间】:2023-03-10 14:42:01
【问题描述】:

我有一张表,其中包含一些已过时的存储定价信息。 A 列有一个存储日期列表,如果 K、L 和 M 列在给定的日期范围内,则需要将它们加在一起并减去 E 列的总和。 Q1 是您选择“7/15/15”格式的开始日期的位置,Q2 是您选择所需范围的结束日期的位置。这里有一些图片可以帮助我描述的内容:

忽略第二个图像“平均利润”单元格,它应该标题为“总利润”

【问题讨论】:

  • 昨天你看到我最后的评论了吗?您选择所需范围的结束日期的位置不是 Q2,而是 Q4,这很可能是它返回 0 的原因。看起来第 2 行和第 3 行被隐藏了。
  • 哇,很棒的收获!虽然,即使在修复宏之后,我仍然得到 0.. 确信您的发现是修复..
  • 嗯。我前几天晚上提供给你的公式在做出改变后是否有效?
  • 不,它没有。仍然返回 0 .. 我无法弄清楚这件事。在纸上看起来很容易。

标签: excel vba date range sumifs


【解决方案1】:

这里,我解决你的 VBA 问题的方法。

Public Sub summarizeValue()

    Dim total As Long
    Dim row As Integer

    'Set start row
    row = 5

    'Work with sheet
    With Sheets("sheetname")

        'Loop until date cell is blank
        Do While .Range("A" & row) <> ""

            'If all date cell are valid
            If IsDate(.Range("A" & row)) And IsDate(.Range("Q1")) And IsDate(.Range("Q4")) Then

                'If date is valid between two range.
                If .Range("Q1") <= .Range("A" & row) And .Range("A" & row) <= .Range("Q4") Then

                    total = total + .Range("K" & row) + .Range("L" & row) + .Range("M" & row) - .Range("E" & row)

                End If

            End If

            row = row + 1

        Loop

        .Range("Q7") = total

    End With

End Sub

【讨论】:

  • 我浏览了代码,一切似乎都很好,对我来说它应该可以工作。但运行脚本后,返回“0”。不过,VBA 似乎是最好的解决方案。也许稍微修修补补就可以解决这个问题。
  • 您应该在With Sheets("sheetname") 修改您的工作表名称。如果是,它会运作良好。我已经测试过了。如果不确定,我认为您应该调试代码。
  • 我已经在运行之前更正了代码。正确的工作表名称在 VBA 中,但仍返回“0”。
  • 我认为您的日期值无效,因此每次都返回 0。请在运行代码时调试它。
  • 我的逻辑是检查日期,如果没问题,将 K、L 和 M 相加,然后从总数中减去 E。最后,我将总值设置为 Q7。如果您使用我的代码,只会出现错误,即日期值无效。如果日期值之一无效,则汇总过程不起作用。一件事是循环是从第 5 行开始的。我认为当从总数中减去 E 时它会得到 0。
猜你喜欢
  • 2016-11-14
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 2021-06-23
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多