Excel EXPAND 是 Microsoft 365/Excel 2024 专属的动态数组函数,核心作用:把一个数组 / 区域扩展到指定行数、列数,并用自定义值填充新增部分。
一、函数语法
=EXPAND(array, rows, [columns], [pad_with])
参数说明
| 参数 | 必选 | 含义 | 规则 |
|---|---|---|---|
| array | ✅ | 要扩展的数据源 | 单元格区域、动态数组结果(如 FILTER、UNIQUE) |
| rows | ✅ | 扩展后的总行数 | 必须 ≥ 原数组行数;省略 / 留空 = 保持原行数 |
| columns | ❌ | 扩展后的总列数 | 必须 ≥ 原数组列数;省略 / 留空 = 保持原列数 |
| pad_with | ❌ | 填充新增单元格的值 | 省略默认填 #N/A;可填文本、数字、空值("")等 |
二、核心规则(必看)
只能 “放大”,不能 “缩小”
若
rows< 原行数 或columns< 原列数 → 返回 #VALUE! 错误。动态溢出
结果会自动向下、向右溢出,无需手动拖动填充。
默认填充
不写
pad_with→ 新增单元格显示 #N/A。
三、基础用法示例(附公式 + 效果)
示例 1:基础扩展(默认 #N/A 填充)
把 A1:B2(2 行 2 列) 扩展为 3 行 3 列:
=EXPAND(A1:B2, 3, 3)
| 原数据 | 扩展后(3×3) |
|---|---|
| 1 23 4 | 1 2 #N/A3 4 #N/A#N/A #N/A #N/A |
示例 2:自定义填充(用 “-” 占位)
=EXPAND(A1:B2, 3, 3, "-")
| 扩展后 |
|---|
| 1 2 -3 4 -- - - |
示例 3:只扩展行(列不变)
把 A1:B2(2 行 2 列) 扩展为 5 行 2 列,填充 0:
=EXPAND(A1:B2, 5, , 0)
示例 4:只扩展列(行不变)
把 A1:B2(2 行 2 列) 扩展为 2 行 4 列,填充空文本:
=EXPAND(A1:B2, , 4, "")
示例 5:单列转多列(数据重复 + 填充)
把 A1:A3(3 行 1 列) 扩展为 3 行 2 列,填充 “无”:
=EXPAND(A1:A3, , 2, "无")
| 原数据 | 扩展后 |
|---|---|
| 苹果香蕉橙子 | 苹果 无香蕉 无橙子 无 |
四、实用场景
场景 1:统一报表尺寸(对齐多表)
多个数据源行列数不一,用 EXPAND 统一为 10 行 5 列,填充 “-”:
=EXPAND(数据源, 10, 5, "-")
场景 2:动态留空(美化表格)
在每行数据后插入 1 行空行(配合 REDUCE、VSTACK):
=DROP(REDUCE("",A2:C4,LAMBDA(a,r,VSTACK(a,r,EXPAND("",,3,"")))),1)
场景 3:标签批量复制
把 A2 标签按 B2 次数横向扩展:
=EXPAND(A2,,B2,A2)
五、常见错误与解决
| 错误 | 原因 | 解决 |
|---|---|---|
| #VALUE! | 行数 / 列数 < 原数组 | 把 rows/columns 设为 ≥ 原尺寸 |
| #N/A | 未指定填充值 | 加第 4 参数(如 ""、0、"-") |
| #SPILL! | 溢出区域有内容 | 清空目标区域,或用 WRAPROWS 重排 |
| 函数不存在 | 版本过低 | 升级到 Microsoft 365/Excel 2024 |
六、与其他函数对比
| 函数 | 作用 | 区别 |
|---|---|---|
| EXPAND | 扩展数组到指定尺寸,填充值 | 只能放大;自动溢出 |
| TAKE | 截取数组前 N 行 / 列 | 只能缩小 |
| DROP | 移除数组前 N 行 / 列 | 只能缩小 |
| WRAPROWS | 按指定列数重排数组 | 不填充,仅重排 |
奇怪吧




