乐于分享
好东西不私藏

Excel 行转列 / 列转行零基础教程,选择性粘贴转置 + TRANSPOSE 函数全讲解

Excel 行转列 / 列转行零基础教程,选择性粘贴转置 + TRANSPOSE 函数全讲解

文/华杰科技工作室


你有没有经历过这种崩溃时刻——


从系统导出的报表,月份在行、产品在列,但领导非要月份在列、产品在行。然后你一行一行复制,一列一列粘贴,搞得眼花手抖,结果还贴错了两行。


手动转置,就是用体力换时间,而这恰恰是Excel最鄙视的操作方式。


今天讲透行转列/列转行的3种方法,每种都带完整步骤和快捷键,学完直接用在明天的报表里。




方法一:选择性粘贴转置——最经典的老办法


这是Excel里"转置"这个词的官方来源,从2003版本就有了,算得上元老级功能。

操作步骤:

  1. 选中需要转置的数据区域,比如A1:D5,按Ctrl+C复制
  2. 点击目标区域的左上角单元格,比如F1
  3. 右键单击,在弹出的菜单中选择【选择性粘贴】
  4. 在弹出的对话框右下角,勾选【转置】,点击确定
  5. 数据瞬间完成行列互换,原来的5行4列变成4行5列

快捷键加速版: 复制后直接按 Ctrl+Alt+V,弹出选择性粘贴对话框,按 E 就能快速勾选转置,再按回车确认。

版本兼容性: ✅ Windows全版本 / ✅ Mac(Cmd+Ctrl+V) / ✅ WPS全版本


说句掏心窝的话,这个方法我用了六七年了。经典就是经典,日常用完全够,关键是不依赖公式,粘贴完数据就固定了。数据确定不会再改的场景下,这是最稳最快捷的选择。





方法二:TRANSPOSE函数——源数据变了结果跟着变

选择性粘贴转置后,结果与源数据断开连接,源数据修改不会同步到转置区域。如果你的数据会持续更新,需要保持联动,就用TRANSPOSE函数。


注意: 方法二和三用同一个TRANSPOSE函数,区别仅在于操作方式。方法二适用于Excel 2010-2019等不支持动态数组的版本,需要手动预选区域并三键确认;方法三适用于Excel 365/2021及以上版本,支持动态数组自动溢出,操作更简便。



操作步骤(适用于Excel 2010-2019):


  1. 先确认源数据尺寸。在任意空白单元格输入=ROWS(A1:D5)得到行数5,输入=COLUMNS(A1:D5)得到列数4,则目标区域需要选4行4列
  2. 选中目标区域(4行×4列),比如F1:J4
  3. 在公式栏输入:
=TRANSPOSE(A1:D5)提醒:A1:D5要替换成你的实际数据区域。
  1. 输入完毕后,按Ctrl+Shift+Enter(三键组合),公式两端自动出现大括号{},表示数组公式生效
  2. 这时你修改源数据的任意单元格,转置后的区域会实时同步更新

防错技巧: 用TRANSPOSE最常见的问题就是目标区域选错大小。建议操作前先用 =ROWS()=COLUMNS() 函数确认源数据的行数和列数,再按"行变列、列变行"的规则选择目标区域,避免数据被截断。


版本兼容性: ✅ Windows Excel 2010及以上 / ✅ Mac同上 / ✅ WPS




方法三:TRANSPOSE动态数组版——新版本更省心


关于TRANSPOSE函数的版本差异,详见方法二说明。



操作步骤(适用于Excel 365/2021及以上):

  1. 点击目标区域的左上角单元格,比如F1
  2. 输入公式:
=TRANSPOSE(A1:D5)
  1. 直接按Enter,数据会自动溢出填充整个转置区域(周围出现蓝色虚线框)
  2. 如果源数据增加了行或列,转置结果会自动扩展,不需要重新设置区域大小

补充说明——单行/单列转换(非矩阵转置):

如果你不是做行列互换,而是想把一列数据转成一行,或者把一行数据转成一列,可以用TOCOL和TOROW函数(仅Excel 365最新版):

=TOROW(A1:A10)   把一列数据转成一行
=TOCOL(A1:J1) 把一行数据转成一列

注意:这两个函数是"展平"函数,适用于单行/单列的转换场景,与TRANSPOSE的矩阵转置功能不同,不要混淆。

版本兼容性: ✅ Windows Excel 365/2021+ / ✅ Mac同上 / ⚠️ WPS部分版本不支持动态数组溢出




高频实战场景


场景一:月度报表格式转换(完整拆解)

从ERP系统导出的销售报表,格式是这样的:

月份产品A产品B产品C
1月12008001500
2月13509201380
3月11007801620

数据位于A1:E4(含标题行),5行4列。

但集团下发的模板要求月份在列、产品在行,格式如下:

产品1月2月3月
产品A120013501100
产品B800920780
产品C150013801620

操作步骤:

  1. 选中A1:E4,按Ctrl+C复制
  2. 点击目标位置G1,右键 → 【选择性粘贴】→ 勾选【转置】→ 确定
  3. 原来的5行4列自动变成4行5列,月份跑到了列标题,产品跑到了行标题
  4. 如果数据后续还会更新,改用=TRANSPOSE(A1:E4)公式版,一劳永逸

场景二:问卷数据交叉分析


问卷回收后,原始数据每行对应一个人、每列对应一道题,格式如下:

受访者Q1Q2Q3Q4
张三5435
李四4543

但做交叉分析时,需要用数据透视表统计每道题的得分分布,这时需要把数据转置为每行一道题、每列一个人。


操作建议: 先用TRANSPOSE函数写好公式,后续新增问卷数据时会自动更新转置结果,不需要反复手动操作。如果问卷量很大(超过1000份),建议搭配Power Query使用,可以一次性清洗并转置所有问卷数据。

场景三:数据透视前调整布局

做数据透视表前,经常需要把按地区分行的数据转成按产品分行。比如原始数据是"地区×月份"的二维表,但透视表需要"产品×月份"的布局。

操作建议: 如果源数据会持续更新,建议用TRANSPOSE函数保持联动,这样每次刷新数据源后转置结果自动同步。如果每周都要转置同类报表,可以用Power Query设置一次查询,后续只要刷新就能自动完成转置,彻底解放双手。

新手避坑指南


坑一:转置后数字格式丢失

选择性粘贴转置后,有时候日期变成了数字串,百分比变成了小数。这是因为转置操作不一定会保留原格式。

解决方法:转置后重新设置一次数字格式。选中转置区域 → 右键【设置单元格格式】→ 根据数据类型选择对应格式:

  • 日期数据:选择【日期】→ 类型选"YYYY-MM-DD"
  • 百分比数据:选择【百分比】→ 小数位数选"2位"(即0.00%)
  • 文本数据:选择【文本】保持原样

坑二:TRANSPOSE目标区域选小了

用TRANSPOSE函数时,如果预选的目标区域比实际需要的区域小,数据会被截断,而且Excel不会报错提示。

解决方法:数清楚源数据的行数和列数,目标区域按"行变列、列变行"的规则对应选择。比如源数据是8行3列,目标区域就选3行8列。更稳妥的方式是用 =ROWS()=COLUMNS() 先确认尺寸(见方法二步骤1)。

坑三:合并单元格转置报错


如果你的源数据区域里有合并单元格,选择性粘贴转置时会弹窗报错,或者转置结果完全错乱。


解决方法:转置之前,先取消所有合并单元格。选中数据区域 → 【开始】选项卡 → 点击【合并后居中】取消合并。



真正的高手,不是会多少花里胡哨的技巧,而是把一个基础功能用到极致。


行转列这个操作看起来简单,但几乎每个职场人都会遇到。面对行列互换不再手忙脚乱,就是这篇文章最大的价值。




互动话题: 你平时用哪种方法转置?是经典的选择性粘贴,还是已经用上了TRANSPOSE函数?评论区聊聊,看看哪种方法最多人用。如果你有因为转置出错被领导说过的经历,也欢迎分享出来,帮大家避雷!


如果这篇文章帮到了你,欢迎转发给需要做报表的同事,让他们也告别手动复制粘贴的低效操作。


做了一个《转置操作速查卡》,里面整理了今天讲的三种方法的操作步骤、快捷键和版本兼容性,还附带了常见报错的速查表。需要的朋友,关注「华杰科技工作室」,后台回【资料】领取,长期有效。