文档库 最新最全的文档下载
当前位置:文档库 › Excel VBA利用下拉框实现数据统计案例实现

Excel VBA利用下拉框实现数据统计案例实现

Excel VBA利用下拉框实现数据统计案例实现
Excel VBA利用下拉框实现数据统计案例实现

Excel VBA利用下拉框实现数据统计案例实现最近用Excel做一个销售预测表单,为了实现操作的便捷性使用VBA编写了一个简单的下拉框功能,中间查了很多资料,但很难有完全适合自己功能需求的,最后消化了几份文档,整合里面使用的方法,终于得到自己想要的结果,现在分享给大家。

我的表单有以下5张Sheets:

其中可供机型明细表存有下月销售产品的详细信息,表头如下:

现在想在机型销量预测表单上型号列使用下拉框实现机型选择功能,效果如下:

功能需求:单击型号列的单元格出现下拉框,选择需要预测的机型,机型填入相应的单元格,然后弹出文本框提供预测该机型必要的参考信息。

流程及代码如下:

1、插入模块

模块1的代码用于在机型销量预测表单建立下拉框:

Public list

Sub ListData()

If https://www.wendangku.net/doc/708197973.html,<> "机型销量预测" Then Exit Sub

Dim list As Object

Set list = ActiveSheet.OLEObjects("ComboBox1")

If Err <> 0 Then

ActiveSheet.OLEObjects.Add(classtype:="https://www.wendangku.net/doc/708197973.html,boBox.1",

Left:=ActiveCell.Offset(0, 1).Left, Top:=ActiveCell.Top, Width:=1000).Select End If

End Sub

然后在机型销量预测表单下编写如下代码,该代码定义了一个事件,当机型销量预测表单发生变化即选择第3列(型号列)弹出下拉框,同时定义了下拉框的内容:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

IfIsEmpty(list) ThenListData

Dim ws As Worksheet, rownum As Integer

Set ws = Worksheets("可供机型明细表")

rownum = ws.Cells(Rows.Count, 1).End(xlUp).Row

https://www.wendangku.net/doc/708197973.html,boBox1.Left = Target(1).Offset(0, 1).Left

https://www.wendangku.net/doc/708197973.html,boBox1.Top = Target(1).Top

If Target.Column = 3 Then

ComboBox1.Style = fmStyleDropDownCombo

ComboBox1.Visible = True

ComboBox1.list = ws.Range("B2:B" &rownum).Value

Else

ComboBox1.Visible = False

End If

End Sub

最后将选择的下拉框内容填入单元格,并搜索该型号近三个月的销量信息显示出来:

Private Sub ComboBox1_Change()

Dim ws1 As Worksheet, ws2 As Worksheet, str1 As String, str2 As String

Dim Sales(1 To 3)

Set ws1 = Worksheets("营销公司月订单数据")

Set ws2 = Worksheets("机型销量预测")

ActiveCell.Value = ComboBox1.Value

str1 = ActiveCell.Value

str2 = Sheets("营销公司年、月总量预测").Cells(1, 3).Value

ComboBox1.Visible = False

Sales(1) = Application.WorksheetFunction.SumIfs(ws1.Range("L:L"), ws1.Range("D:D"), str2, ws1.Range("B:B"), Month(Now()) - 3, ws1.Range("I:I"), str1)

Sales(2) = Application.WorksheetFunction.SumIfs(ws1.Range("L:L"), ws1.Range("D:D"), str2, ws1.Range("B:B"), Month(Now()) - 2, ws1.Range("I:I"), str1)

Sales(3) = Application.WorksheetFunction.SumIfs(ws1.Range("L:L"), ws1.Range("D:D"), str2, ws1.Range("B:B"), Month(Now()) - 1, ws1.Range("I:I"), str1)

For i = LBound(Sales) To UBound(Sales) '将数组转换成String格式str_A = str_A&Sales(i) & ","

Next

str_A = "={" & Left(str_A, Len(str_A) - 1) & "}"

MsgBox "最近三个月销量" &str_A

End Sub

完成上述工作就能实现一个简单的下拉框及数据统计功能,当然基于该代码框架还可以扩展出更复杂的下拉菜单功能。由于Word排版原因代码中的空格和换行可能会出问题,直接复制张贴要注意。

最后祝你成功!

相关文档