我试图为我的一个日常流程制作一个宏来汇总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加到右边。
提前致谢。
答案 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。