Excel多列数据按原顺序合并为一列的方法求助(无VBA经验)
多列转单列(保持原列顺序)分步指导
针对你Excel中A:AY列的时间序列数据,以下两种方法完全不需要VBA,适合新手操作,且能严格保证数据顺序:
方法1:Power Query可视化操作(推荐,不会出错)
这是Excel自带的工具,全程点击操作,无需写代码:
- 选中你要转换的A到AY列所有数据(包括表头,如果有的话)
- 点击顶部菜单栏的「数据」选项卡,找到「自表格/区域」按钮:
- 如果弹出「创建表格」窗口,勾选「我的表格有标题」(有表头才勾),点击「确定」进入Power Query编辑器
- 在编辑器里,点击「转换」选项卡 → 「转置」,把原来的行列互换(此时原列变成行,原行变成列)
- 继续点击「转换」选项卡 → 「逆透视列」下拉菜单 → 「逆透视所有列」,此时会生成两列:「属性」(原列名)和「值」(原单元格内容)
- 点击「属性」列的排序按钮(列标题旁边的小箭头),选择「升序」,这样数据就会按A→B→…→AY的列顺序排列
- 右键点击「属性」列,选择「删除」,只保留「值」列
- 点击顶部「主页」选项卡 → 「关闭并上载至…」,选择一个空白单元格作为输出位置,点击「确定」,就能得到按原列顺序堆叠的单列数据
方法2:公式法(直接用Excel函数)
如果不想用Power Query,直接用INDEX函数生成单列:
- 假设你的数据从第1行到第100行(根据实际行数修改),找一个空白列(比如AZ列)
- 在AZ1单元格输入公式:
=INDEX($A$1:$AY$100,INT((ROW()-1)/51)+1,MOD(ROW()-1,51)+1)- 注意:把
$A$1:$AY$100改成你实际的数据区域(比如数据到第200行就改成$A$1:$AY$200);51是A到AY的总列数(A是第1列,AY是第51列,不用改)
- 注意:把
- 输入完公式后,鼠标移到AZ1单元格右下角的小方块(填充柄),按住左键往下拖,直到出现空值或#REF!,此时所有数据就按列顺序转成单列了
- 要把公式结果变成可复制的静态数据:选中AZ列的所有结果,按
Ctrl+C复制,右键选择「粘贴值」即可
补充说明
你之前用的CONCATENATE函数是用来合并多个单元格的文本内容(比如把A1和B1合并成一个单元格),不是用来将多列转成单列的,所以会报错或达不到预期效果,以后别用它做这个操作啦。
内容的提问来源于stack exchange,提问作者Dibyo Aditya
相关产品推荐
相关产品推荐

