📌 软件教程

Excel 分列被 90% 的人浪费了:我用它清了三年脏数据

导出数据全挤在一列、手机号带横杠、地址省市县黏在一起、身份证变成科学计数法——这些活我用分列干了三年。这篇讲分隔符号与固定宽度两种模式、第三步的格式陷阱、分列前的备份习惯,以及什么时候该换 Power Query。

✍️ 快乐自给自足 🕒 2026-10-19 10:12 👁 21 阅读 📖 6,291 字 ⏱ 约 13 分钟

三万行数据挤在一列里,那天我加班到十一点

三年前我刚接手公司的客户数据整理,从老系统导出来的表格,打开的一瞬间我人是懵的:所有字段全挤在 A 列,一行一条,长这样——客户编号,公司名称,联系人,手机号,所在城市,备注。三万两千行,全是一整串。

我当时的第一个念头是“手动拆吧”,拆了三十行就意识到这活儿得拆到明年。第二个念头是找 IT 要新导出,人家回我一句“系统就长这样,改不了”。第三个念头才是打开数据选项卡,看到那个一直被我忽略的按钮:分列。

那天我用它加几个查找替换,把三万两千行拆成了七列,前后不到四十分钟。从那以后,只要碰到结构混乱的表格,我第一反应都是先看看分列能不能解决。

这篇不讲理论,按我实际操作的顺序来:先做什么、点什么、第三步那个最容易被忽略的格式设置、以及我踩过的那些坑。

先搞清楚它在哪、能干什么

位置在数据选项卡里,靠右边一点,图标是两个格子中间有个箭头,中文叫分列。选中一列数据,点它,会弹出一个三步向导。

第一步会让你选两种模式:分隔符号、固定宽度。这两个模式覆盖了绝大多数场景,区别在于你的数据是靠什么分开的。

分隔符号适合“有明确的分隔符”的数据,比如逗号、制表符、分号、竖线、顿号、空格。从系统导出的 CSV、从网页复制的表格、从聊天记录里整理出来的名单,基本都是这一类。

固定宽度适合“没有分隔符,但列宽是固定的”数据,比如老式财务系统打印出来的报表、POS 机小票、银行流水文本、某些设备导出的日志。这类数据每一列的位置是固定的,靠数第几个字符来切。

选错模式不会炸,但会浪费你半天时间。判断方法很简单:看一眼数据,如果每行都有相同的符号在相同的位置,用分隔符号;如果符号不统一甚至没有符号,但每列开始的位置一致,用固定宽度。

动手之前,三条保命规则

第一条,先另存一个副本。分列是就地覆盖的,它会把你选中的那一列改掉,原来的内容不保留。虽然多数情况下 Ctrl+Z 能撤回,但如果你中途保存过、或者数据量太大导致撤销记录被清掉,那就真回不去了。我现在养成一个习惯,做任何批量操作之前,按一下 Ctrl+S,然后另存为带日期的副本,多花十秒,省得事后哭。

第二条,在目标区域旁边留出空列。分列会把拆出来的内容往右边铺,如果右边有数据,它不会问你,直接覆盖。所以先把右边几列插空,或者把要拆的列复制到一张新表的 A 列再操作。

第三条,先拿前三行试。整列拆之前,复制三行到一个空白区域,用同样的参数拆一遍,看看结果对不对。特别是日期和数字格式,试错成本很低,全量重来的成本很高。

这三条听起来像废话,但我见过太多人直接在原表上点确定,结果三列数据被覆盖,然后来找我“能不能恢复”。说实话,很多时候恢复不了。

分隔符号模式:把符号选对,活就干完一半

选了分隔符号之后,第二步会列出一堆复选框:制表符、分号、逗号、空格,还有一个“其他”。右边有个预览窗口,你勾什么,它实时显示拆完的样子,这个预览非常重要,别跳过。

从系统导出的 CSV,最常见的是逗号;从网页复制过来的表格,最常见的是制表符;从聊天记录粘出来的,可能是空格或者竖线;从某些后台导出的,可能是分号。你勾上对应的那个,看一眼预览,如果拆出来的列数跟预期一致,就对了。

中文数据有个特殊情况:分隔符可能是顿号、破折号、竖线、斜杠、甚至中文逗号。这些在复选框里都没有,要选“其他”,然后在后面的小输入框里输入那个符号。输中文标点的时候注意输入法状态,别输成英文的,长得像但不是同一个字符,拆不出来。

还有两个复选框值得注意。“连续分隔符号视为单个处理”,如果你的数据里出现两个逗号挨着,比如某个字段是空的,勾上这个就不会拆出一个空列,不勾就会。这个要根据你的数据来决定,勾错了列数全错位。

“文本识别符”,一般是一个双引号。有些系统导出 CSV 的时候,会把含逗号的字段用双引号包起来,比如公司名里本身带逗号。勾上这个,被引号包住的内容就不会被拆开。这个选项救过我很多次,尤其是导出的备注字段里带各种标点的时候。

固定宽度模式:靠鼠标点竖线

选了固定宽度,第二步会给你一个带刻度的预览区,你在需要切分的位置点一下,就会出现一条带箭头的竖线,表示从这里切开。点错了双击那条线可以删掉,也可以拖动调整位置。

这个模式最适合那种“列对齐”的老报表。我处理过一批银行流水,每一行长这样:日期八位、空格、摘要二十位、空格、金额十二位。用分隔符号根本没法拆,因为空格数量不固定;用固定宽度,在三个位置各点一下,一秒拆完。

有个细节:预览区的字体可能跟你实际数据的字体不一样,导致你以为对齐的位置其实偏了一两个字符。稳妥的做法是先在预览里切,拆完检查第一列和第二列的开头有没有多出空格或者吃掉字符,有的话撤回,把竖线左右挪一格再试。

如果数据里混了中英文,宽度会更麻烦,因为中文是双宽度字符。这种情况我一般不用固定宽度,改用 Power Query 按位置切,或者干脆写公式。硬拆的代价太大。

第三步:90% 的人在这里翻车

第三步是给每一列指定格式,选项有常规、文本、日期,还有一个“不导入此列”。这一步看着最无聊,实际上决定了你拆完的数据能不能用。

先说最常见的坑:长数字变成科学计数法。客户编号、订单号、快递单号,很多是十几位甚至二十位的纯数字。如果你把格式留成常规,Excel 会把它当数字处理,超过十五位的部分全部变成零,显示成一串带 E 的东西。你看到的可能是 1.23457E+17,点进去一看,后几位全变成零了,原始信息已经丢了。

解决办法是这一列选“文本”。选文本之后,它按原样保留字符串,不管多长都不会变形。要注意的是,如果原数据已经是科学计数法了,再选文本也救不回来,因为精度在导入的那一刻就丢了。所以处理身份证、银行卡号、订单号这类数据,第一步就该把整列设成文本格式,而不是等拆完再改。

第二个坑是以 0 开头的编号。比如工号 00123,常规格式会变成 123,前面的零没了。同样选文本就能保住。电话号码带区号的,比如 010 开头,也是一样的问题。

第三个坑是日期被乱改。比如你的数据里有一列是 10-01,本意是“10 月 1 日”这种简写,常规格式会被识别成日期,自动补上年份,变成 2026-10-01。如果本意是一个产品型号叫 10-01,那就彻底错了。这种列一定要在第三步选文本。

第四个坑是负数和百分号。财务数据里常有 -1,234.56 这种写法,或者 12% 这种百分比。常规格式会把它们转成数值,百分号消失,值变成 0.12。如果你只是要展示原文,选文本;如果你要计算,选常规但要确认转换结果对不对。

“不导入此列”这个选项也很有用。比如导出的数据里有一列全是没用的分隔残留,或者一列你想直接丢掉,勾上它,拆完这一列就不出现,省得你拆完再去删。

分列的副作用,比你想的多

第一个副作用是覆盖。前面说过,它就地改你选中的列,右边有内容就盖掉。这个行为没有二次确认,点完就生效。

第二个副作用是破坏公式引用。如果你的表里有公式引用了被拆的那一列,拆完之后引用关系会错位,计算结果全乱。所以拆之前先看看有没有公式,有的话把公式复制成值,或者把数据挪到新表再拆。

第三个副作用是合并单元格。合并单元格是分列的天敌,选中区域里有合并单元格,它会提示“此操作要求合并单元格具有相同大小”,然后不让你继续。解决办法是先取消合并,填充空白,再拆。取消合并之后那些空白格,可以用定位空值加向上填充的方式补全,这个操作在查找和选择里。

第四个副作用是格式丢失。拆完之后,原来列上的颜色、边框、数字格式不一定跟着走,尤其是拆成多列之后。如果这张表是要发给别人看的,拆完记得重新刷一遍格式。

拆完想拼回去怎么办

有时候拆完发现拆错了,或者需要把几列合并成一段文本。最简单的办法是用连接符,写一个等于 A2 加连接符加 B2 的公式,中间用引号包住你想插入的分隔符,下拉填充,再把公式结果复制成值。

列数多的时候用 TEXTJOIN 更方便,它的第一个参数是分隔符,第二个参数是是否忽略空值,后面跟要连接的区域。比如把 A 到 C 三列用横杠连起来,一个公式搞定,不用一个个加连接符。

要注意的是,拼回去之后原来的分列结构就没了,如果你还可能需要拆,最好把拼好的结果放到新列,别覆盖原始列。

拆之前先洗一遍,能省一半事

很多数据拆不干净,不是分列的问题,是源数据里有脏东西。我一般会先做三个预处理。

第一个,全角转半角。中文输入法下打出来的逗号、括号、空格是全角的,看起来跟半角一样,但分列认不出来。处理办法是用查找替换,把全角逗号替换成半角逗号,全角空格替换成半角空格。注意替换之前先备份,全角转半角是有损的,如果原文需要保留全角,就别转。

第二个,去掉不可见字符。从网页或者 PDF 复制过来的文本,经常带着零宽空格、换行符、制表符,这些东西在单元格里看不见,但会让分列结果莫名其妙多出空列。Excel 里有专门的函数可以清理,配合去空格函数用一遍,数据会干净很多。

第三个,处理多余空格。分隔符是空格的时候,两个词之间可能有一个空格,也可能有三个。勾上“连续分隔符号视为单个处理”能解决大部分,但如果空格是全角半角混着的,还是得先统一。

这三步做完再分列,成功率能高很多。我现在处理别人的表,都是先洗后拆,不会直接上手点分列。

什么时候别用分列,改用 Power Query

分列很好用,但它有三个天花板,碰到就得换工具。

第一,数据量太大。分列对几万行还行,二三十万行就开始卡,上百万行基本是点一下等半天,还可能直接卡死。这种量级用 Power Query,它在后台处理,速度稳定,而且处理过程能保存下来,下次换一批数据点一下刷新就完事。

第二,需要重复做。如果你每个月的报表都要做同样的拆分,用分列就是每个月手工重来一遍。Power Query 的拆分步骤会记在查询里,下个月把新文件丢进去,点刷新,结果自动出来。这一点是我从分列转向 Power Query 的根本原因。

第三,拆分逻辑复杂。比如要按“最后一个横杠”拆、要按字符位置拆、要拆完再逆透视、要拆完做分组汇总,这些分列做不了,Power Query 里都是现成的菜单项。

Power Query 的入口在数据选项卡的获取数据里,也可以从表格或区域直接进。进去之后选拆分列,菜单里有按分隔符、按字符数、按位置,还有按大小写转换、按数字和非数字拆分。拆完点关闭并上载,结果会生成一张新表,原数据不动。这个“原数据不动”的特性,比分列那种就地覆盖安全得多。

学习曲线确实比分列陡一点,但也就陡那么一点。会用分列的人,花半个小时看看 Power Query 的界面,基本就能上手最常见的那几个操作。

一次真实的清洗:三万两千行客户名单

还是开头那批数据,我完整说一下我的处理顺序,你可以照着套。

原始数据在 A 列,一行一条,字段用英文逗号分开,但备注字段里本身也带逗号,所以不能直接按逗号拆。第一步我先观察,发现有问题的行都是备注里带引号的。第二步用分列,勾上逗号,同时勾上文本识别符(双引号),这样被引号包住的备注就不会被拆散。预览确认每行都是七列,确定。

拆完是七列,但我发现第八列偶尔会多出一列,原因是有些备注里的引号不配对,系统导出的时候就坏了。这部分大概两百多行,我单独筛出来,手工修了一遍,量不大,可以接受。

第三步,处理手机号。原始手机号有的带横杠,有的带空格,有的是十一位纯数字。我先用查找替换去掉横杠和空格,然后把这一列的格式设成文本,防止前面的 1 被当成数字处理。这一步做完,整列长度统一是十一位,异常值一眼就能筛出来。

第四步,处理城市。原始数据里是“广东省深圳市南山区”这种整串,我要的是省、市、区三列。这种情况用分列不合适,因为有些地址没有省,有些直辖市写法不一样。我最后是用公式配合查找,先找“省”字的位置切一刀,再找“市”字切一刀,切不出来的单独标记出来人工看。这类非结构化文本,别指望一个功能全自动解决,能自动化八成,剩下两成人工,就是最优解。

第五步,去重。客户名单里同一个公司出现两三次很常见,公司名写法还不完全一样,有的带“有限公司”,有的不带。这一步我用的是删除重复项加人工核对,先把完全一样的删掉,再把相似的手工合并。三万两千行最后剩两万四千多,去掉了七千多条重复。

整个过程断断续续做了两天,但真正用分列的时间不到一小时,剩下的时间都在判断和核对。这也是我想说的一点:工具能解决的是“机械拆分”,判断哪些该留哪些该删,永远得靠人。

几个绕不开的坑,提前告诉你

第一个,分列只对单列生效。你选中多列点分列,它会问你“是否只拆分所选列”,选是就只拆第一列,后面的不动。想批量拆多列,得一列一列来,或者用 Power Query。

第二个,拆出来的空列不好删。如果原数据里有两个连续的分隔符,不勾“连续视为单个”,就会拆出空列。空列本身不碍事,但它会让后面的列整体右移,你按列号写的公式就全错了。拆完先检查一遍列数对不对。

第三个,日期格式跟系统区域设置有关。同一份数据,在你的电脑上拆出来是日期,在同事电脑上拆出来是文本,原因是两台机器的区域格式不一样。这种表发给别人之前,最好把日期列转成文本,或者统一成一种明确的写法,比如年月日全写。

第四个,拆完记得检查首尾空格。拆分出来的每一列,开头或者结尾可能带着空格,肉眼看不出来,但会导致后续的匹配、查找、数据透视出错。用去空格函数过一遍,或者查找替换把空格替换掉,五分钟的事。

第五个,别在筛选状态下分列。筛选状态下分列,它只处理可见行,取消筛选之后你会发现没被处理的行还是原样,数据就变成一半新一半旧。这种错最难查,因为看起来每行都有值。

我的固定套路

现在拿到任何一张脏表,我的顺序是:另存副本,插空列,洗一遍全角空格和不可见字符,取三行试样,选模式,勾分隔符看预览,第三步逐列定格式(编号类一律文本),确定,检查列数和首尾空格,最后核对几行原始数据。

这套流程走下来,大部分脏数据都能在十分钟内拆干净。真正难的不是操作,是拆之前想清楚“我要的最终结构是什么”,以及拆之后愿不愿意花时间核对。

分列这个功能,菜单位置很不起眼,很多人用了十年 Excel 都没点过。但它是那种“会了之后回不去”的功能:一旦你习惯把一坨乱数据三秒钟拆成规整的列,再看别人一行行手工复制粘贴,你会替他着急。

拆完的数据怎么交出去

分列只是把脏东西拆开,真正交付之前还有一步,把结果另存为一个新文件,别在原表上继续改。我一般复制到新工作表,命名带上日期,原始数据整列隐藏而不是删掉,万一哪一步拆错了还能回头对。

发给别人的时候只发新表,别把带公式的中间过程一起丢过去,对方打开看到一堆引用会以为文件坏了。如果非要保留计算,就在最后一列把公式转成数值再发,简单粗暴但不会有误会。

另外提醒一句,分列之后数字列常常会变成文本格式,左上角有小绿三角,求和结果是零。选中那一列,用分列再走一遍、最后一步选常规,或者干脆乘一,就恢复正常了。这个小毛病我踩过不止一次,每次都要愣两秒才反应过来。

拆完的数据怎么交出去

分列只是把脏东西拆开,真正交付之前还有一步,把结果另存为一个新文件,别在原表上继续改。我一般复制到新工作表,命名带上日期,原始数据整列隐藏而不是删掉,万一哪一步拆错了还能回头对。

发给别人的时候只发新表,别把带公式的中间过程一起丢过去,对方打开看到一堆引用会以为文件坏了。如果非要保留计算,就在最后一列把公式转成数值再发,简单粗暴但不会有误会。

另外提醒一句,分列之后数字列常常会变成文本格式,左上角有小绿三角,求和结果是零。选中那一列,用分列再走一遍、最后一步选常规,或者干脆乘一,就恢复正常了。这个小毛病我踩过不止一次,每次都要愣两秒才反应过来。

🔠 字号

看累了?去工具区松一松 🧘

白噪音、深呼吸、三分钟小游戏,满血复活再回来。