# Power Query 取消透视：让Copilot导入宽表，新增月份后刷新不漏列

宽表3件商品×3个月为9个组合，新增10月后12个。S01的8月是0，S02的7月未报数。M中先用唯一哨兵保留缺失，Python参考不冒充Power Query引擎刷新。

## 文件身份

所有人物、组织、数值为原创虚构教学资料。作者本地原生参考不代表目标SaaS实测；本题未登录目标账号、购买权益、调用付费API、发送评论/邀请或写主日历。

## 七步操作

1. 区分固定键、月份、零和缺失

打开v1与v2，固定SKU/unit为键，月份是可扩展列；一处0和一处空白写入口径。

2. 让Copilot导入并检查真实连接

使用Copilot导入v1，确认生成的Power Query连接和真实源路径；不可用则明确转人工导入。

3. 仅选择固定键后取消透视其他列

在Power Query只选SKU与unit，再选Unpivot Other Columns，而非固定选三个月列。

4. 在展开前明确编码缺失

按明确M步骤在取消透视前把空白编码为不会与合法值冲突的缺失哨兵，展开后恢复为空并保留missing标记。

5. 加载九个键月组合

加载长表，核对3×3共9个键/月组合，其中0与未报数分别存在。

6. 增加第四个月后刷新

将独立测试源替换为v2并刷新，核对3×4共12个组合，新月进入且原键不变。

7. 保存M源与十二行对照

保存M源、真实连接操作记录和长表参考；只本地执行M等价代码时标明未运行Power Query刷新。

## 独立验证

在复制的目录运行 `python3 -B verify.py`。需要Python3，PDF验证依赖pypdf、原生表格只读检查依赖openpyxl，文档用标准库读取OOXML。教材的本地HTML查看器直接在浏览器打开，不需要连接第三方服务。

## 原生文件

- monthly-long-reference.xlsx
- monthly-wide-v1.xlsx
- monthly-wide-v2.xlsx

## 验收

- v1为9个、v2为12个唯一SKU/月组合，无新月漏列或旧月重复。
- 0仍为数值零；缺失单元不转零，missing审计表与原宽表可一一追溯。
- M使用固定键的Table.UnpivotOtherColumns；刷新成功必须有实际客户端回读，静态参考不能证明连接。

## 账户与功能依据

- Microsoft：Copilot 通过 Power Query 导入 Excel https://support.microsoft.com/en-us/topic/import-data-from-another-excel-file-with-copilot-in-excel-581bbb50-5743-4a03-b249-12291885b5a0
- Microsoft：取消透视其他列 https://support.microsoft.com/en-us/excel/unpivot-columns-power-query
- Microsoft Learn：Table.UnpivotOtherColumns https://learn.microsoft.com/en-us/powerquery-m/table-unpivotothercolumns
