You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Name Manager或VBA实现下拉列表联动自动填充销售数据?

Excel VBA实现客户下拉列表与销售数据自动填充

一、先设置客户下拉列表

  1. 打开Sheet4,选中你要放置下拉列表的单元格(比如A1)
  2. 点击「数据」选项卡 → 「数据验证」→ 允许类型选「序列」
  3. 在「来源」栏直接引用Sheet3的客户名称区域,比如=Sheet3!$A$2:$A$5(假设客户名在Sheet3的A2到A5,根据你实际数据位置调整)
  4. 确认后下拉列表即可创建完成

二、添加自动填充数据的VBA代码

右键Sheet4的标签 → 点击「查看代码」,粘贴以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' 仅监听下拉列表所在单元格(这里假设是A1,根据你的实际位置修改)
    If Target.Address <> "$A$1" Then Exit Sub
    
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim lastRow As Long
    Dim matchRow As Long
    
    Set wsSource = ThisWorkbook.Sheets("Sheet3")
    Set wsTarget = ThisWorkbook.Sheets("Sheet4")
    
    ' 清空之前填充的旧数据(假设填充到B1:E1,对应4周销售数据)
    wsTarget.Range("B1:E1").ClearContents
    
    ' 如果下拉列表为空,直接退出
    If Target.Value = "" Then Exit Sub
    
    ' 在Sheet3的客户列查找选中的客户
    lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
    matchRow = Application.Match(Target.Value, wsSource.Range("A2:A" & lastRow), 0)
    
    ' 找到匹配项后,填充对应4周数据
    If Not IsError(matchRow) Then
        wsTarget.Range("B1:E1").Value = wsSource.Range("B" & matchRow + 1 & ":E" & matchRow + 1).Value
    End If
End Sub

三、关键调整说明

  • 代码里的单元格区域(比如$A$1、B1:E1、A2:A5)要根据你实际数据布局修改:
    • 若客户名在Sheet3的C列,就把代码里的"A"改成"C"
    • 若4周销售数据在Sheet3的F-I列,就把"B:E"改成"F:I"
  • 保存文件时需选择「Excel启用宏的工作簿(.xlsm)」格式,否则代码无法生效
  • 若后续会新增客户,可把下拉列表的来源改成动态范围:=OFFSET(Sheet3!$A$2,0,0,COUNTA(Sheet3!$A:$A)-1,1),新增客户会自动加入下拉选项

内容的提问来源于stack exchange,提问作者Yasaswi Gomes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:32:40