如何用Excel/VBA从订单表提取唯一产品名写入仪表板实现数据统计
Excel 订单仪表板实现方案
完全可以仅通过Excel原生功能实现需求,无需开发Python应用,具体实现步骤如下:
一、自动同步唯一产品值到仪表板Product列
适用Excel 365/2021及以上版本
直接用溢出数组公式实现全自动同步,新增订单产品后会自动更新唯一值列表:
- 假设仪表板表
Product列的表头在A1单元格,点击A2单元格输入公式:=UNIQUE(订单表!B:B)
公式中订单表!B:B替换为你实际订单表中Product_Name字段对应的列区域即可,输入后所有唯一产品名会自动向下溢出填充,无需手动下拉。
适用Excel 2019及以下旧版本
用高级筛选功能实现唯一值提取:
- 选中订单表的
Product_Name整列(包含表头) - 点击顶部菜单栏「数据」→「高级筛选」
- 弹窗中选择「将筛选结果复制到其他位置」
- 「条件区域」留空,「复制到」选择仪表板
Product列表头下方的第一个空白单元格 - 勾选「选择不重复的记录」,点击确定即可完成提取,需要更新时重复上述操作即可,也可录制宏绑定按钮实现一键更新。
二、各统计指标公式参考
建议先将两个表转为Excel超级表(选中数据区域按Ctrl+T,勾选「表包含标题」),分别将订单表命名为orders_table、仪表板表命名为dashboard,用结构化引用写公式无需手动匹配单元格位置:
- 总投入(Total_Invested):
=SUMIFS(orders_table[Amount_Paid],orders_table[Product_Name],[@Product],orders_table[Order_Type],"采购") - 总销售额(Total_Sold):
=SUMIFS(orders_table[Amount_Paid],orders_table[Product_Name],[@Product],orders_table[Order_Type],"销售") - ROI:
=IFERROR(([@Total_Sold]-[@Total_Invested])/[@Total_Invested],0),加IFERROR避免无投入数据时出现除0报错 - 平均采购价:
=AVERAGEIFS(orders_table[Price],orders_table[Product_Name],[@Product],orders_table[Order_Type],"采购") - 其余自定义
Value指标可根据业务规则调整SUMIFS/COUNTIFS/AVERAGEIFS的筛选条件即可实现。
补充优化说明
如果需要过滤无效订单的产品,可给UNIQUE函数嵌套筛选条件,比如排除取消订单对应的产品:=UNIQUE(FILTER(orders_table[Product_Name],orders_table[Order_Status]<>"取消"))
内容的提问来源于stack exchange,提问作者Darragh Cahill
相关产品推荐
相关产品推荐

