如何在VBA中按功能执行sum-group?

时间:2016-08-10 08:58:41

标签: excel vba excel-vba

enter image description here 这是每个月每个员工销售记录的表格记录。

每个地区的每位负责人员都可以更改。例如。 A区:5月:179 - > 6月:220

现在,我想总结2016年5月至2016年7月的所有员工销售记录。 范围应为Set rng = Selection.SpecialCells(xlCellTypeVisible).Select With ContextMenu.Controls.Add(Type:=msoControlButton, before:=2) .OnAction = "'" & ThisWorkbook.Name & "'!" & "MyFunctionWithParameter" 'Here somehow I need to provide rng as input argument! .FaceId = 59 .Caption = "Spoji R brojeve" .Tag = "My_Cell_Control_Tag" End With End sub Function MyFunctionWithParameter (rng) MsgBox(rng) End Function 。范围可以是硬代码。

然后将结果粘贴到D3:I21

示例输出应为

  

179 1

     

186 7

     

222 4

     

S24 5

     

...

如何在VBA中执行L3:M21之类的SQL?

备注:

任何想法都没关系(不需要代码)。非常感谢你

是否可以在VBA中执行此操作?或者将所有数据放入虚拟空间中的两列。然后再进行计算?

我必须使用VBA,因为:

这张图只是一个例子。真正的excel背后是一个用户表单。管理员可以选择fromdate和todate。然后,根据所选范围生成报告。

删除第23行 - 总计没问题。可以考虑对表结构进行小的修改。

1 个答案:

答案 0 :(得分:0)

提示:

使用Pivot Table将所有数据放入两列:列人员和列销售。

另外,将Range("D3:D21")中的ID工作人员复制到Range("L3:L21"),然后将此公式放在单元格M3中:

     =E3+INDEX(F$3:G$21,MATCH(L3,F$3:F$21,0),2)+INDEX(H$3:I$21,MATCH(L3,H$3:H21,0),2)

然后将单元格M3向下拖动到单元格M21。

无论如何,你反驳自己说,“任何想法都没问题(不需要代码)”然后说“我必须使用VBA,因为”。你想要哪一个?

编辑:

OP表示公式不能正常运行,但确实可行。看看this Excel file。以下是实施上述公式的VBA代码:

Sub evabb()
Dim i As Long

With Sheets("Sheet1")
        For i = 3 To 21
            .Cells(i, "L") = .Cells(i, "D")
            .Cells(i, "M").Formula = "=E" & i & "+INDEX(F$3:G$21,MATCH(L" & i & ",F$3:F$21,0),2)+INDEX(H$3:I$21,MATCH(L" & i & ",H$3:H21,0),2)"
        Next
End With
End Sub