【问题标题】:Return Sum values only when the sum of them is the MAX sum based on another column仅当它们的总和是基于另一列的 MAX 总和时才返回 Sum 值
【发布时间】:2020-08-12 01:17:24
【问题描述】:

我正在寻找公式解决方案或 vba 代码来计算单元格 L2 和 M2 上的数据。

说明

我有一个列范围 G:I 的表,该表记录了从 1 到 1000 的天数,值是已售出的金额(可以是贷方或借方),何时是贷方,列“I ” 将显示“美好的一天”,否则为借记“糟糕的一天”。所有这些计算都得到了正确处理,当我想获得连续“好日子”或“坏日子”的最大总和值时,问题就来了

第 1 天和第 2 天是连续的“坏日子”,两个值的总和为 200(到目前为止,这是最大的总和值),当我再次获得连续的“坏日子”和总和时,问题就来了值大于我的初始连续最大总和值。第 500 天和第 501 天是连续的“坏日子”,两者的总和是 600(这就是我在单元格 L2 中想要的)。 “Good Day”的流程相同

连续天表示超过 1 天的“坏天”或“好天”,例如 2 天、4 天、100 天等。假设我有 100 个连续的“Bad Days”,总和为 1000,然后我有 1 个“God Day”,然后我有 2 个连续的“Bad Days”,总和为 5000,大于我的之前连续 100 个“糟糕的日子”(我需要单元格 L2 上的 5000 值)

在下图中,前 2 天是连续的“坏天”,总和为 200(目前这是最大值)。从第 4 天到第 10 天,有 7 个连续的“坏天”,总和为 35(小于之前连续值的总和,即 200)。现在第 500 天和第 501 天是连续 2 个“坏天”,总和为 600,大于第 1 天和第 2 天的前 2 个连续天。600 现在将是我在单元格 L2 上需要的最大值(如果有人改变结果或值,L2 也必须更新

【问题讨论】:

    标签: excel vba excel-formula


    【解决方案1】:

    在单元格 K3 中使用

    =MAX(IF($I$2:$I$14=K2,$H2:$H14,0)+IF($I$3:$I$15=K2,$H3:$H15,0))
    

    如果您没有 Office 365,则需要使用 Ctrl+Shift+Enter 确认公式。

    复制到 L3 单元格。

    【讨论】:

    • 如果这解决了您的问题,请按照tour 中的说明标记答案。如果没有,请发表评论,以便我跟进
    • teylyn,我很感激你在帮助我,我们已经接近最终计算目标的 95%,我遇到的问题是,如果你将第 501 天的结果更改为好天,公式仍然为第 500 天返回 300,并且应该连续 2 天(第 1 天和第 2 天)返回 200。我只在“I”列上的结果是 2 个或更多连续结果时寻找最大总和值。如果一天是好天,下一天是坏天,我不需要对那个坏天的值求和,除非这些是 2、3、4、5 等连续的“坏天”结果
    【解决方案2】:

    当每个单元格上的连续数据等于或大于 2 以及单元格左侧的列具有“正" 或 "NEGATIVE" 值(如果条件不满足,则将单元格留空并转到下一个单元格)

    'Calcular Suma de Stops Seguidos
        Dim IteracionesFinales As String
        IteracionesFinales = (Fil_F - Fil_I)
        
        'Rango descendente
        Dim r As String
        r = 9
        'Restar Filas
        Dim rf As Integer
        'Maximo de itraciones
        
        For i = 1 To IteracionesFinales
        
        If Range("AA" & r).Value = "" Then
        r = r + 1
        
        Else:
        
        rf = (Range("AA" & r).Value - 1) * -1
        
        Range("AB" & r).Select
        ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-1]>=2,RC[-2]=""NEGATIVA""),SUM(R[" & rf & "]C[-4]:OFFSET(RC[-4],0,0)),"""")"
        
        r = r + 1
        rf = 0
        
        End If
        
        
        Next i
            
        
         'Calcular Suma de Takes Seguidos
     
        'Rango descendente
        Dim r2 As String
        r2 = 9
        'Restar Filas
        Dim rf2 As Integer
        'Maximo de itraciones
        
        For i = 1 To IteracionesFinales
        
        If Range("AA" & r2).Value = "" Then
        r2 = r2 + 1
        
        Else:
        
        rf2 = (Range("AA" & r2).Value - 1) * -1
        
        Range("AC" & r2).Select
        ActiveCell.FormulaR1C1 = _
        "=IF(AND(RC[-2]>=2,RC[-3]=""POSITIVA""),SUM(R[" & rf2 & "]C[-4]:OFFSET(RC[-4],0,0)),"""")"
        
        r2 = r2 + 1
        rf2 = 0
        
        End If
        
        
        Next i
        
        Range("Q19").Select
        ActiveCell.FormulaR1C1 = _
            "=MAXIFS(R[-11]C[11]:R[370]C[11],R[-11]C[9]:R[370]C[9],""NEGATIVA"")"
        Range("R19").Select
        ActiveCell.FormulaR1C1 = _
            "=MAXIFS(R[-11]C[11]:R[370]C[11],R[-11]C[8]:R[370]C[8],""POSITIVA"")"
    

    上面的代码将每组的总和数据放在最后两列 AB,AC 中。然后我只需要一个 MAXIFS 函数来获取最大金额

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 2019-11-23
      • 2016-03-22
      相关资源
      最近更新 更多