Excel宏 - 动态总和订购数量

时间:2015-03-19 15:57:37

标签: excel

我试图为我的一个日常流程制作一个宏来汇总TOTAL列上某些订单的订购数量。 问题是每天订单数量不同。 所以我必须找到TOTAL列并从左边总结oders的值。

该文件如下所示:

集团代码Ord1 Ord2 Ord3 Ord4 Ord5 Ord6 Ord7 TOTAL

101 68070 0 0 0 6 0 0 0

我设法找到TOTAL细胞和它下面的药水,但我不知道如何进一步对左边的值求和。

Sub Find()

Dim FindString As String
Dim Rng As Range
FindString = "TOTAL"
If Trim(FindString) <> "" Then
    With Sheets("Data").Range("A1:AN1")
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            Application.Goto Rng, True
        Else
            MsgBox "Nothing found"
        End If
    End With
End If

ActiveCell.Offset(1, 0).Select

如何在TOTAL列上动态求和Ord1..Ordx的值?

我需要提到的是,在TOTAL列的右侧还有其他带公式的列,因此,我必须找到TOTAL而不仅仅是将所有单元格从C2加到右边。

提前致谢。

1 个答案:

答案 0 :(得分:1)

因为我在另一个网站上收到了我的问题的答案,我认为也可以在这里发布它也许会在某些时候帮助某人。

“您的问题有点不清楚。我推断,对于每个组/代码,Ord1:Ordx列中将有多行组/代码和不同数量的订单。然后,您希望总计每个组/ “总计”列中的代码订单。我假设您的有效列为A:AN表示订单,AO表示总计。这些都是正确的吗?

编辑:根据您对我的推断的确认,尝试以下事件处理程序。

Private Sub Worksheet_Change(ByVal Target As Range) 
 Dim i, LastRow 
 LastRow = Range("A" & Rows.Count).End(xlUp).Row 
 On Error GoTo errhandler 
 Application.EnableEvents = False 
 For i = 2 To LastRow 
 Cells(i, "AO").Value = Application.Sum(Range("C" & i & ":" & "AN" & i)) 
 If Cells(i, "AO").Value = 0 Then 
 Cells(i, "AO").Value = "" 
 End If 
 Next i 
 errhandler: 
 Application.EnableEvents = True 
 End Sub 

选择包含订单回顾的工作表,然后右键单击底部的工作表标签。

选择“查看代码”

将事件处理程序粘贴到右侧的白色编辑区域(右键单击区域内部并“粘贴”)。

关闭VBE。

在工作表中的任何/每次更改数据(添加/删除/修改)后,列AO将返回列C:AN中列出的订单总数。这假定第1行包含标题,正如您在问题中指出的那样。

注意:没有输入任何订单的任何行,AO列中的值将返回为“空白”,以避免可能有大量的“0”条目使视图混乱......“

感谢garbo7441。