【问题标题】:Add total to column where row header meets criteria将总计添加到行标题符合条件的列
【发布时间】:2023-03-14 02:56:01
【问题描述】:

为此提前道歉,我对 VBA 很陌生,我确信这是我正在努力解决的简单编码问题。

根据用户定义的月数(刚刚输入到 ssheet),我有一行列标题,给出了月数和上个月之后的标题“总计”。

即用户说 12 个月,单元格 A2 =“Jan-15”和 M2 =“总计”。

然后用户在标题下添加一些销售数据。

我需要做的是使用 VBA 将总计添加到 header = "total" 的每一行数据的末尾。

我在想 If Then 是有道理的,但我正在努力让宏将公式放在正确的单元格中,然后让公式查看变量范围。这是迄今为止我想出的最好的(请不要笑!)

Sub Add_total()
Dim criteria As String
criteria = Range("A:A").Value
If criteria = "Total" Then
Range("12:12").Select
ActiveCell.Formula = "=sum($c12:c12)"
End If
End Sub

例如,我想要的是,其中 M2 = "Total",然后 C12 = sum(c1:L12)

我意识到最简单的方法是让用户自己添加总计,或者在工作表左侧很远的地方添加一个总计列,但这会涉及整个业务,需要限制手动输入/保证准确性计算。

非常感谢任何帮助。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    为什么不简单地在单元格M3 中放入函数=sum(A3:L3) 并向下复制?

    如果您在 VBA 中仍然需要它,这是否可行:

    Sub testsum()
    i = 3 'start in cell3
    While Not IsEmpty(Cells(i, 1))
    Cells(i, 13) = WorksheetFunction.Sum(Range((Cells(i, 1)), (Cells(i, 12))))
    i = i + 1
    Wend
    End Sub
    

    【讨论】:

    • 对此的编辑真的很抱歉,由于某种原因我无法添加一行...非常感谢 - 不是我所需要的,但您为我指明了方向。最后进行了以下操作:'Sub Total() Set Find_total = Range("6:6").Find("Total", LookIn:=xlValues, searchorder:=xlByColumns) Set Revenue_total = Find_total.Offset(rowoffset: =3, columnoffset:=-1) Set Revenue_cell = Find_total.Offset(rowoffset:=3, columnoffset:=0) Revenue_cell = WorksheetFunction.Sum(Range((Cells(9, 2)), Revenue_total)) End Sub'
    【解决方案2】:

    非常感谢 - 不是我需要的,但您为我指明了方向。最后去了以下:

    Sub Total() Set Find_total = Range("6:6").Find("Total",_
    LookIn:=xlValues,searchorder:=xlByColumns) 
    Set Revenue_total = Find_total.Offset(rowoffset:=3, columnoffset:=-1) 
    Set Revenue_cell = Find_total.Offset(rowoffset:=3, columnoffset:=0)
    Revenue_cell = WorksheetFunction.Sum(Range((Cells(9, 2)), Revenue_total)) 
    End Sub
    

    再次感谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 2018-10-27
      相关资源
      最近更新 更多