在行值更改后,在另一列中返回一行

Posted

技术标签:

【中文标题】在行值更改后,在另一列中返回一行【英文标题】:Upon change in row value, Do a sumif one row back in another column 【发布时间】:2016-07-03 00:34:52 【问题描述】:

我希望你能帮助我解决我的 VBA 问题。我想使用沿着 A 列向下的循环。一旦检测到更改,我想在 C 列中插入一个 SUMIF 公式,如果将 A 列分组(向右的总偏移量)分组到 B 列的总数。 A 已经排序。有点像小计,但不使用小计行。

A B C 1 2 1 6 1 3 11 =SUMIF(A:A,A3,B:B)

2 7 2 8 15 =SUMIF(A:A,A5,B:B)

3 8 3 6 14 =SUMIF(A:A,A7,B:B)

(没有在 1 & 2 和 2 & 3 更改之间添加空白行)我相信我是其中的一部分,使用以下代码片段,但无法一起工作。

        Sub SUMIF_Upon_Change()
      Dim r As Long, mcol As String, i As Long


    ' find last used cell in Column A
      r = Cells(Rows.Count, "A").End(xlUp).Row

     ' get value of  last used cell in column A
      mcol = Cells(r, 1).Value

     ' insert rows by looping from bottom
      For i = r To 2 Step -1
         If Cells(i, 1).Value <> mcol Then
           Cells(n, 3).Formula = _
         "=SUMIF(A:A,RC[-1],B:B)"

    'AND / OR This added at the change row minus one row.

            'Places formula in each adjacent cell (in column "D").
            Range("C2:C" & Range("A" & Rows.Count).End(xlUp).Row).Formula = "=SUMIF(A:A,A3,BB)"
         End If
      Next i

End Sub

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

XLMatters,你几乎拥有它。您唯一的主要问题是您似乎混合了公式参考样式(“RC[-1]”和“A3”)。你必须选择一个或另一个。这是您的代码的工作示例,稍作修改:

Sub SUMIF_Upon_Change()
    Dim r As Long, mcol As String, i As Long
    ' find last used cell in Column A
    r = Cells(Rows.Count, "A").End(xlUp).Row
    ' get value of  last used cell in column A
    mcol = Cells(r, 1).Value
        For i = r To 2 Step -1
            If Cells(i, 1).Value <> Cells(i + 1, 1).Value Then
                Cells(i, 3).Formula = "=SUMIF(A:A,A" & i & ",B:B)"
            End If
        Next i
End Sub

如果你的心是 FormulaR1C1 风格,那么你就去吧:

Sub SUMIF_Upon_ChangeRC()
    Dim r As Long, mcol As String, i As Long
    ' find last used cell in Column A
    r = Cells(Rows.Count, "A").End(xlUp).Row
    ' get value of  last used cell in column A
    mcol = Cells(r, 1).Value
        For i = r To 2 Step -1
            If Cells(i, 1).Value <> Cells(i + 1, 1).Value Then
                Cells(i, 3).FormulaR1C1 = "=SUMIF(C1,RC1,C2)"
            End If
        Next i
End Sub

如果您还有其他问题,请尽管问。

【讨论】:

谢谢,它工作得很好!我知道我很接近,但就像你说的那样,我正在混合公式参考......祝周末愉快!

以上是关于在行值更改后,在另一列中返回一行的主要内容,如果未能解决你的问题,请参考以下文章

Pandas,对于一列中的每个唯一值,在另一列中获取唯一值

根据另一列的位置从一组列中返回值

EXCEL 比较一列数据是不是在另一列出现过

Excel:如果在另一列中发现重复的单元格值,则突出显示绿色

您可以从 Redshift 中的 python UDF 返回多个值吗?

返回查询的所有行,其中一列中的字符串值与另一列中的字符串值匹配