列表/数组单元格 → 文本¶
位置:功能区 EGTools 选项卡 → EGTools 组 → 拆分按钮下拉菜单
Microsoft 365 测试版(版本 2610、内部版本 20520 及以上)的单元格内列表/数组(Lists in Cells)
以富值形式保存,因此在旧版 Excel(包括普通的 Microsoft 365)中只显示为 #UNKNOWN!
(Excel 2016 为 #VALUE!),无法读取其中的项。此命令直接读取已保存文件中的 richData,
把每个列表单元格改写为下面的文本表示法。转换后的文本可用兼容函数
HAS · HASANY ·
HASALL · FLATTEN
求值(在 Microsoft 365 中以 EG.HAS 这样的 EG. 前缀注册,与原生函数共存)。
文本表示法¶
| 列表形态 | 表示法 | 示例 |
|---|---|---|
| 一列列表(无嵌套) | 逗号分隔 — 与 ARRAYTOTEXT 简洁格式相同。项中含 , ; { } " 或首尾空格,或会被读成数字/TRUE/错误的文本,用 "…" 引起来(内部 " 写成 "") |
Mon, Tue, Wed / "1,000", "TRUE" |
| 二维·嵌套数组 | 数组常量格式 — ARRAYTOTEXT 严格格式(文本全部加引号、无空格、; 分行、, 分列)的大括号嵌套扩展 |
{"a",1;"b",2} / {"a",{"b","c"},"d"} |
| 只有一个数字/逻辑项的列表 | 不写成文本,而是写入数字/逻辑值本身 | 3、TRUE |
- 数组常量格式的文本在测试版 Excel 中前面加
=即可直接变回单元格内数组公式。 - HAS 系列函数两种表示法都能读取。逗号分隔列表或
{…}内的各项:数字形状 → 数字、 TRUE/FALSE → 逻辑值、#N/A等错误名 → 错误;没有逗号和大括号的单个文本不作分类, 原样作为 1 个文本项。引号未闭合等无法解析时不报错,整体视为 1 个项。
操作流程¶
- 读取文件 — 把当前工作簿的副本(SaveCopyAs)解压到临时文件夹,读取其中的 richData (列表/数组富值)。未保存的编辑也包含在副本中,因此会照常反映。
- 确认对象 — 没有列表单元格时提示后结束。
- 确认窗口 — 提示将转换 N 个值列表单元格。若有 M 个公式结果的列表单元格,会询问
“是否也把它们固定为文本?”:是 = 全部 / 否 = 仅值单元格 / 取消。
(公式列表单元格保存为
_xlfn._ARRAY(...),在旧版中本来就是#NAME?。选“否”且没有值单元格时结束。) - 保存关卡 + 备份 — 未保存时询问是否保存(拒绝/取消则中止),应用前自动保存备份文件
(与工作簿同一文件夹,
原名_egbak_<时间>.<扩展名>— 与应用旧版兼容相同的流程)。 备份失败则不继续。 - 应用 — 按下面的规则把每个列表单元格改写为文本(或值)。
- 完成窗口 — 提示已转换的单元格数、已跳过的单元格数(如有)和备份文件路径。
应用规则¶
| 对象 | 处理 |
|---|---|
| 值列表单元格 | 仅改写当前值为错误(#UNKNOWN!/#VALUE!)的单元格。保存后已编辑、不再是错误的单元格会跳过 |
| 公式列表单元格 | 仅在确认窗口选“是”时转换。原公式以 EgListRemoved: <公式> 保存在单元格批注中(已有批注则接在后面) |
| CSE 数组区域 | 先把整个区域固定为值,再向该单元格写入文本 |
| 会被自动解释为公式/数字/TRUE 的文本 | 先把单元格格式改为文本(@)再写入 |
| 只有一个数字/逻辑项的列表 | 不写成文本,而是写入数字/逻辑值本身 |
非 _array 的富值(单元格内图片、链接的数据类型等) |
不是转换对象 |
备注¶
- 在测试版 Excel 中同样可以运行此命令,因此也可用于与他人共享前预先转换。
- 转换后用 HAS / HASANY / HASALL / FLATTEN 可得到相同结果。若文档在测试版 Excel 中以
=HAS(...)之类的公式保存,应用旧版兼容会把_xlfn.HAS、_xlfn._xlws.FLATTEN标记转换为 EGTools 兼容函数名。 - 推荐执行顺序:① 列表/数组单元格 → 文本,② 应用旧版兼容(在 Microsoft 365 非测试版中
则为还原为内置函数)。遵守此顺序,
=HAS(...)之类的公式才会得到正确结果而不是#VALUE!。若对公式结果的列表单元格选了“否”而保留原样,其_xlfn._ARRAY(...)公式会由应用旧版兼容 改写为ARRAYTOTEXT(…,1)。 - 要还原时请打开备份文件。公式单元格也可从批注中的
EgListRemoved:公式确认。