FLATTEN¶
类别:MS Excel 兼容函数 · 原生引入:Microsoft 365(2026 年新增)
解除列表或数组文本的嵌套,将各项溢出到网格。
语法¶
=FLATTEN(数组, [填充值], [层级])
参数¶
| 参数 | 必需 | 说明 |
|---|---|---|
| 数组 | 必需 | 要解除嵌套的列表文本、区域或数组 |
| 填充值 | 可选 | 不齐行的填充值(默认 #N/A) |
| 层级 | 可选 | 要解除的嵌套层数(默认全部) |
返回¶
返回解除嵌套后的二维数组,在动态数组 Excel 中溢出。数组参数本身是错误时原样返回该错误;填充值给数组、层级不是数字或为负数、或结果为空时返回 #VALUE!。
示例¶
| 公式 | 结果 | 说明 |
|---|---|---|
=FLATTEN("a, b, c") |
{a;b;c} | 列表 → 一列 |
=FLATTEN("{""a"",""b"";""c""}") |
{a,b;c,#N/A} | 二维数组文本,不足处用 #N/A 补齐 |
=FLATTEN({"a, b";"c"}) |
{a;b;c} | 列表单元格所在列纵向堆叠 |
备注¶
- 一层 = 在外层数组的每一行中,把各元素(标量 = 1×1,数组 = 其自身形状)横向拼接,再把各行纵向堆叠,宽度用填充值(默认 #N/A)补齐。层级省略或为 0 时反复执行直到没有嵌套;正数 N 只解除 N 层,剩余的嵌套项以列表文本表示法({…})显示。例:=FLATTEN("{""a"",{""b"",""c""}}",,1) → {a,{"b","c"}} — 只解除该单元格的第一层嵌套。
- 一列列表文本得到纵向一列,含多个列表单元格的列区域纵向堆叠,单个单元格的二维数组文本保持其二维形状。数组文本本身长度不齐的行始终用 #N/A 补齐,与填充值无关;列表中的错误项(#N/A 等)作为数据保留。没有逗号和大括号的单个文本原样成为 1×1 文本。
- Microsoft 365 测试版的单元格内列表在旧版 Excel 中只显示为 #UNKNOWN!(Excel 2016 为 #VALUE!),请先用功能区 [EGTools] › [列表/数组单元格 → 文本] 转换后再使用。相关函数:HAS、HASANY、HASALL
- 支持:Excel 2010+。在没有原生函数的旧版本中按
FLATTEN原名注册(直接替换),在具有原生函数的新版 Excel 中注册为EG.FLATTEN。