Excel表格快速重塑咨询:新手寻求宽表转窄表高效方法
宽表转窄表(单年份列)的高效方法
针对你需要将多年份列的表格转换为单年份列、国家列重复的需求,以下是两种高效实现方式:
Excel原生高效方案:Power Query(推荐)
这是处理这类格式重塑最快捷的工具,适合大数据量:
- 选中你的数据源区域,点击「数据」选项卡 → 「从表格/区域」(旧版Excel找「获取和转换数据」组下的对应入口)
- 在Power Query编辑器中,选中所有年份列(比如2020、2021这类列)
- 切换到「转换」选项卡,点击「逆透视列」→ 「逆透视所选列」
- 此时会生成「属性」和「值」两列,右键重命名「属性」为「年份」,「值」改为你对应的数据列名(比如「GDP」「人口」等)
- 点击「关闭并上载」,直接得到目标格式的表格
DAX方案(适用于Power Pivot/BI场景)
如果是在Power Pivot或Power BI中处理,用DAX可以直接生成目标表:
静态写法(适合年份列少的情况)
假设原表名为OriginalTable,包含「国家」「2020」「2021」「2022」列:
目标表 = UNION( SELECTCOLUMNS(OriginalTable, "国家", [国家], "年份", "2020", "数值", [2020]), SELECTCOLUMNS(OriginalTable, "国家", [国家], "年份", "2021", "数值", [2021]), SELECTCOLUMNS(OriginalTable, "国家", [国家], "年份", "2022", "数值", [2022]) )
动态写法(适合年份列多的情况)
自动识别所有年份列并转换,无需逐个手动添加:
目标表 = VAR YearCols = FILTER( COLUMNS(OriginalTable), NOT CONTAINSSTRING([Value], "国家") -- 排除非年份列,这里假设唯一非年份列是「国家」 ) RETURN GENERATE( OriginalTable, SELECTCOLUMNS( YearCols, "年份", [Value], "数值", CALCULATE(MAX(OriginalTable[[Value]])) ) )
如果数据量很小,也可以用手动复制+INDEX函数快速处理,但大数据量优先选Power Query或DAX方案。
内容的提问来源于stack exchange,提问作者Ultimatejuss
相关产品推荐
相关产品推荐

