你是不是也遇到过这种烦恼:一堆数据挤在一列里,想把它排成整齐的多行多列,手动复制粘贴到崩溃?😫
别慌!今天就用INDEX+ROW+COLUMN的组合公式,教你两种超实用的「单列转矩阵」方法,看完直接告别手动搬运!
🎯 先看效果:两种排版任你选
我们以 A1:A30 的 1-30 数字为例,看看两种不同的排版效果:
排版 1:Z 字形填充(先填满一行再换行)C1=INDEX($A$1:$A$31,5*ROW(A1)-5+COLUMN(A1))
排版 2:N 字形填充(先填满一列再换列)
C14=INDEX($A$1:$A$31,ROW(A1)+5*COLUMN(A1)-5)
🧩 核心原理:ROW 和 COLUMN 的魔法
要理解这两个公式,我们先搞懂两个关键函数:
1. ROW 函数:获取当前行号
ROW(A1)- 当公式向下填充到 C2 时,
ROW(A1) 会自动变成 ROW(A2) → 返回 2 - 作用:生成连续的行序号,用来控制数据在矩阵中的「行位置」
2. COLUMN 函数:获取当前列号
COLUMN(A1)- 当公式向右填充到 D1 时,
COLUMN(A1) 会自动变成 COLUMN(B1) → 返回 2 - 作用:生成连续的列序号,用来控制数据在矩阵中的「列位置」
3. INDEX 函数:按位置取数
INDEX(数据源区域, 行号) → 从数据源中取出指定行号的数据。我们的核心任务就是:用 ROW 和 COLUMN 算出正确的行号,让 INDEX 从 A 列精准取数。
✍️ 公式拆解:一步步看懂逻辑
🔹 公式 1:Z 字形(先填行,再换行)
目标:每 5 个数据为一行,依次填充。
=INDEX($A$1:$A$31,5*ROW(A1)-5+COLUMN(A1))
- 行号 =
5*1 - 5 + 1 = 1 → 取 A1 的值 1
ROW(A2)=2- 行号 =
5*2 - 5 + 2 = 7 → 取 A7 的值 7
逻辑:5*ROW(A1)-5 计算出当前行的起始位置偏移,再加上COLUMN(A1)得到当前单元格对应的 A 列行号。
🔹 公式 2:N 字形(先填列,再换列)
目标:每 5 个数据为一列,依次填充。
=INDEX($A$1:$A$31,ROW(A1)+5*COLUMN(A1)-5)
ROW(A1)=1- 行号 =
1 + 5*1 - 5 = 1 → 取 A1 的值 1
ROW(A2)=2- 行号 =
2 + 5*2 - 5 = 7 → 取 A7 的值 7
逻辑:5*COLUMN(A1)-5 计算出当前列的起始位置偏移,再加上ROW(A1)得到当前单元格对应的 A 列行号。
🚀 实操步骤:小白也能一键搞定
- 准备数据源
- 选择目标区域
- 输入公式
- 批量填充
💡 小技巧:想改列数 / 行数?直接把公式里的 5 换成你想要的数字就行!比如改成3,就是每 3 个数据换行 / 换列。
💡 举一反三:灵活改造公式
- 改变列数:把公式里的
5 改成 N,就是每 N 个数据换行 / 换列 - 改变数据源:把
$A$1:$A$31 改成你的实际数据区域(记得加绝对引用$) - 从中间开始:如果数据源从 A10 开始,公式里要对应加上偏移量
✨ 总结
- Z 字形公式
- N 字形公式
- 核心思想:用
ROW和COLUMN生成动态序号,再用INDEX精准取数,全程不用复制粘贴,数据更新自动同步!
学会这招,以后再遇到单列转矩阵的需求,直接掏出这两个公式,效率直接拉满💯!