夜雨聆风学习资料网

ARTICLE · 1352103

Excel 粘贴后全乱?换行、空行、身份证号变 0

Excel 粘贴后全乱?换行、空行、身份证号变 0

上一件讲的是粘贴之前选什么。这一件讲粘贴之后为什么乱。

三种情况最常见:一段话粘过去占了三行;表格中间凭空多出几个空行;18 位的身份证号变成 1.23E+17。

看着是三件不相干的事,根子是同一个 —— 粘贴不是把内容原样搬过去,是按目标表的格子重新落位。你以为复制的是「一段话」,它收到的是「三条记录」。

01 先看三处现场

第一处:一段话炸成三行。

在邮件或聊天里复制「已核对 / 待财务复核 / 10 月 8 日前回复」,粘到 Excel 一个格子里。结果占了 A1、A2、A3 三行,下面的表全被顶下去。

第二处:中间凭空多出空行。

从网页或 PDF 复制一份清单粘过来,看着明明是连着的,粘完中间夹着几行空白,往下拉半天。

第三处:18 位身份证号变成 1.23E+17。

列拉宽了也不对,末几位全是 0。

三处的共同点:都不是「格式没选对」。格式选错了顶多难看,这三处是内容落错了地方,或者内容已经不是原来那个值。

02 剪贴板里其实有两份东西

先讲清楚一件事,后面三处都靠它。

复制一片区域,剪贴板里同时存了两份:一份是「格子矩阵」(带行列、格式、公式),一份是「纯文本」。

纯文本那份长什么样?实测复制一个 3×3 区域(a 到 i),剪贴板里的纯文本是:

a → b → c d → e → f g → h → i

箭头那个位置,剪贴板里是一个制表符;一条换行,就是一行。制表符分列,换行分行。

粘回 Excel 的时候,如果两边都是 Excel,它优先用「矩阵」那份,所以又变回 3×3,一格不差。

但网页、邮件、PDF、记事本、聊天窗口,递过来的只有纯文本那一份。Excel 拿到纯文本,只有一条规则可依:制表符换一格(往右),换行换一行(往下)。

实测:把纯文本 a→b→c、换行、d→e→f 粘进 E9,得到 E9=a、F9=b、G9=c、E10=d —— 完全按分隔符落位。

所以「炸成三行」不是它出错,是它老实执行了分隔符。换行是分隔符,制表符也是 —— 分隔符多一个,格子就多一个。

03 一段话:双击进格子再粘

想让三段话待在一个格子里,关键是让 Excel 知道「我现在是在编辑一格内容,不是在填一片区域」。

做法两步:

  1. 双击那个格子
    (或选中后按 F2),格子里出现闪烁的光标
  2. Ctrl+V
    ,然后回车

本机实测:同样三段文字,直接粘到 A1,占了 A1、A2、A3 三行;双击进 A1 再粘,三段全在 A1 里 —— 长度 25 个字符,中间是两个换行,A2、A3 还是空的。

为什么这样就不炸:进了编辑态,Excel 收到的就是一段文字流,它没地方可拆,只能整套塞进这一格。

两个细节:

  • 粘完记得回车(或点别的格子)。停在编辑态看着已经好了,其实没落定,切走可能白粘
  • 粘错了先按 Ctrl+Z,多数情况一次就回去了;不行再手动重来

还有一个更麻烦的后果,得单独说:你粘的位置如果在表格中间,它不只多出两行,下面几行会被直接盖掉。

实测:A1 到 A5 写着 old1 到 old5,把两行文字粘到 A3 —— 结果 A3 变 new1、A4 变 new2,原来的 old3、old4 没了,A5 还在,整张表还是 5 行。

行数没变,数据没了。这也是为什么「粘完先看行数对不对」不够 —— 行数对得上,内容也可能已经被换掉。

反过来也成立:Excel 里含换行的格子,复制到本表别的位置不会炸。实测把 A1(内含两处换行)复制到 C3,C3 还是一格,C4 是空的 —— 这次走的是「矩阵」那份,不是纯文本。

一句话记住:炸行只发生在「纯文本进来」的时候。

04 空行:先看是整行空,还是这列空

空行的来源比想象的简单:源文本里本来就有空行。

实测:把「alpha / 空一行 / beta」粘进 A1,得到 A1=alpha、A2 空、A3=beta。源里那一个空行,变成了一个空格子。所以别急着骂 Excel,先看复制源里是不是本来就有空行。

删空行大家都会:选中这一列 → Ctrl+G → 定位条件 → 空值 → 确定 → 右键 → 删除 → 整行。

这一步最容易出事。 它删的是「整行」,不是「这一列的这一格」。

实测:A 列 10 行数据,第 3、7 行的 A 列是空的,但 B、C 列有内容(B3 写着 keep3)。按上面五步删完,表格从 10 行变成 8 行 —— B3 里的 keep3 也没了,原来的第 4 行顶上来占了 B3 的位置。

数据没备份的话,这一步是不可逆的。

所以删之前要多做一步:横向看一眼,这一行是不是只有这一列空。

别的列有数据的话,三条路:

  • 只想清掉这一列的空单元格 → 按 Delete(清内容),行还在、位置不乱,但空行也还在
  • 真要删整行 → 先确认这一行横向全空,再删
  • 空行又多又散 → 别一个个看,加一列辅助 =COUNTA(A2:C2),按这列排序,值等于 0 的全沉到最底下,一次性选中删掉

第三条最省事,也是我平时用的。多写一条公式,比删错一次再撤回来便宜。

05 18 位身份证号:不是显示问题,是值被改了

这一处最容易被当成「格式没调好」,其实不是。下面拿一串 18 位数字当例子 —— 身份证号、订单号、银行卡号都是这个形状,掉进去的结果一样。

Excel 只认 15 位有效数字。超过 15 位,第 16 位往后一律按 0 处理 —— 不是不显示,是真的变成 0 了。

实测:把 123456789012345678 粘进常规格式的格子,显示 1.23E+17;取出真实值,是 123456789012345000,后三位已经变成 0。

把列拉宽,科学计数变成 123456789012345000,看着像个数了,末尾还是三个 0。

改格式救不回来。 实测:粘完再把这一列设成文本格式,显示的仍是 1.23E+17 —— 值在粘进来那一瞬间就已经被改了,格式只是外衣。

能救的只有一个时机:粘之前

  1. 先设格式
    :把目标列设成「文本」,再粘 —— 最稳的一种,整列都不用再管
  2. 或者先打单引号
    :在这个格子里先敲一个英文 ',再粘,后面照常输入
  3. 已经丢了
    :只能回源头重来 —— 源文件重新复制一遍,目标列先设文本再粘

手输也一样会丢:往常规格式的格子里直接敲这 18 位,结果完全相同。改格式、调小数位、把列拉宽,都救不回来 —— 那三个 0 已经存在格子里了。

一个例外值得知道:末位是 X 的身份证号不会中招。带了字母,Excel 直接当文本存,18 位一位不丢(实测)。所以同一张表里,有人粘过去完完整整、有人后三位变成 0,很可能只是尾号一个带 X、一个不带。

涉及的东西不少:身份证、银行卡、订单号、快递单号、学号、批次号 —— 凡是「一串数字但不拿来算的」,都该按文本处理。

判断标准很简单:这串数字你会拿它加减乘除吗?不会,就设文本。

06 顺序反过来,就都不用修

三件事的处理时机不一样,记这个顺序:

什么时候
做什么
为什么
粘之前
长数字那列设成文本
粘完就晚了,只能回源头重来
粘之前
看一眼源里有没有空行
有就顺手清掉,比粘完再删省事
粘的时候
一段话就双击进格子
一步到位,不用事后合并
粘之后
先看行数对不对
行数不对就是炸行了,Ctrl+Z 重来最快
删空行前
横向看一眼整行是否全空
不然连带删掉别的列,且不可逆

前两条是「防」,后三条是「查」。防的成本几乎为零,查的成本看运气。

07 最后

列宽不跟这件事,上一件第 7 招讲过怎么单独粘列宽,这里不重复。

下一篇离开 Excel 内部:同一张表粘到 Word、PPT 里,是另一套规矩 —— 默认粘过去只是一份快照,改了源它不知道;表格还会照着原来的列宽一路铺开,铺到页面外面去。那是跨软件的问题,跟这一篇不是一回事。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料