INDEX+MATCH动态统计 2025-10-16

INDEX+MATCH动态统计案例

📊 案例背景

  • 数据源表销售数据 - 字段列可能会变动(增加/删除/移动列)
  • 统计表统计报表 - 需要动态适应数据源结构变化

📁 数据准备

销售数据表 (A1:D6)

日期 销售员 产品类别 销售额
2024-01-01 张三 手机 5000
2024-01-01 李四 电脑 8000
2024-01-02 张三 平板 3000
2024-01-02 王五 手机 4500
2024-01-03 李四 电脑 7500

统计报表 (F1:G6)

统计项目 结果
总销售额
张三销售额
手机类总额
平均销售额
最大销售额

📝 动态公式实现

统计报表的G列输入以下公式:

1. 总销售额

=SUM(INDEX(销售数据!A:D,0,MATCH("销售额",销售数据!1:1,0)))

2. 张三销售额

=SUMIFS(
    INDEX(销售数据!A:D,0,MATCH("销售额",销售数据!1:1,0)),
    INDEX(销售数据!A:D,0,MATCH("销售员",销售数据!1:1,0)),
    "张三"
)

3. 手机类总额

=SUMIFS(
    INDEX(销售数据!A:D,0,MATCH("销售额",销售数据!1:1,0)),
    INDEX(销售数据!A:D,0,MATCH("产品类别",销售数据!1:1,0)),
    "手机"
)

4. 平均销售额

=AVERAGE(INDEX(销售数据!A:D,0,MATCH("销售额",销售数据!1:1,0)))

5. 最大销售额

=MAX(INDEX(销售数据!A:D,0,MATCH("销售额",销售数据!1:1,0)))

🔧 进阶:完全动态范围

如果数据行数也不固定,可以这样写:

=SUM(INDEX(销售数据!A:Z,0,MATCH("销售额",销售数据!1:1,0)))

或者定义名称DataRange

=销售数据!$A$1:INDEX(销售数据!$Z:$Z,COUNTA(销售数据!$A:$A),26)

然后使用:

=SUM(INDEX(DataRange,0,MATCH("销售额",销售数据!1:1,0)))

🧪 测试动态性

现在尝试以下操作,观察统计结果是否自动更新:

  1. 移动列:把"销售额"列从D列移动到E列
  2. 增加列:在"产品类别"后插入新列"数量"
  3. 删除列:删除"日期"列
  4. 增加数据:在最后添加新行数据

💡 公式解释

  • MATCH("销售额",销售数据!1:1,0):找到"销售额"在第几列
  • INDEX(销售数据!A:D,0,列号):返回整列数据
  • SUM/SUMIFS/AVERAGE:对动态获取的列进行统计

🎯 最终效果

无论数据源的列如何变动,只要字段名称不变,统计公式都能自动找到正确的列并计算结果。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容