夜雨聆风学习资料网

ARTICLE · 1147954

数据整理必会的 6 个 Excel 技巧:第 1 招不设,你的编号已经错了

数据整理必会的 6 个 Excel 技巧:第 1 招不设,你的编号已经错了

先说一个场景,你对得上号的那种。

师兄发来一份「实验记录汇总.xlsx」,让你把三个课题组的数据并到一起,算个分组均值。

你打开一看:样本编号列里的 S-001⁠ 变成了 S-1;⁠基因名列里 SEPT2⁠ 变成了「2-Sep」、MARCH1⁠ 变成了「1-Mar」;一整列 18 位的测序编号,最后三位全是 0。

你没改过任何东西。是 Excel 在你打开文件的时候,替你“改”了数据。

这不是段子。2016 年 8 月,Mark Ziemann 等三位作者在 Genome Biology 上发表了一篇评论文章,专门统计这件事:他们下载了 18 本期刊 2005—2015 年间发表的论文补充材料,扫描了 35175 个 Excel 文件,结果在 987 个文件、704 篇论文⁠里确认存在基因名被自动转换的错误,占“附带 Excel 基因列表的论文”的 19.6%。顺手扫 NCBI GEO 上提交的 4321 个 Excel 文件,574 个含基因列表,其中 228 个(39.7%)有错。

论文里有一句话很扎心:这个 bug 2004 年就被报道过,十二年后依然在教材级的期刊上反复出现。⁠ 而且微软至今没有提供一个“永久关闭自动转日期”的开关。

所以本文的第 1 招,是所有技巧里最救命的——它不教你怎么算,它教你怎么别让 Excel 动你的数据。

下面 6 个技巧按拿到数据之后的时间顺序排:导入 1 个(防篡改)、搭结构 1 个、清洗 2 个、汇总 1 个、复用 1 个。

先上速查表,可以直接照着勾。

#
技巧
什么时候用
入口 / 快捷键
1
导入时指定列格式
数据进 Excel 之前
数据 → 从文本/CSV;或 数据 → 分列
2
超级表
拿到干净表之后第一件事
Ctrl+T
3
快速填充 / 分列
数字和单位黏在一起、要拆列
Ctrl+E;⁠数据 → 分列
4
XLOOKUP 与动态数组
跨表补字段、去重、条件筛查
=XLOOKUP(
5
数据透视表 + 切片器
分组求均值 / 标准差
插入 → 数据透视表
6
Power Query
每月、每学期都要重做一遍的活
数据 → 获取数据 → 从文件 → 从文件夹

一、导入:先钉死「别让 Excel 猜」

1. 导入时就把列格式设成文本

Excel 处理科研数据最大的问题不是功能不够,是它太“聪明”——默认帮你猜格式。

四类一定会发生的翻车,记住它们的长相:

  • 像日期的变日期:⁠基因名 SEPT2⁠ → 2-Sep,MARCH1⁠ → 1-Mar⁠(这俩是最经典的受害者,还有 DEC1、OCT4、FEB⁠ 系列)
  • 像科学计数法的变浮点:⁠RIKEN 编号 2310009E13⁠ → 2.31E+13
  • 超过 15 位的被截:⁠微软官方规格里“数字精度”一栏写死就是 15 位。第 15 位之后一律变 0,而且是静默⁠变 0,文件存了就找不回来
  • 前导零消失:001⁠ → 1,⁠于是跟另一张表里的 001⁠ 再也匹配不上

正确的做法是三选一,按场景挑:

① 导入 CSV,不要双击打开。⁠ 走 数据 → 从文本/CSV⁠(或 数据 → 获取数据 → 从文件 → 从文本/CSV)→ 选文件 → 预览窗口里先把该设成文本的那一列点成 “文本”⁠ 再加载。

这两个动作的区别,值得单独说一句:双击 CSV = 让 Excel 猜;走导入 = 你告诉 Excel 是什么。

② 数据已经在表里了 → 用分列向导“洗”回来。⁠ 选中整列 → 数据 → 分列⁠ → 分隔符号(下一步)→ 下一步 → 第三步“列数据格式”选 文本⁠ → 完成。

③ 还没粘 → 先设格式再粘。⁠ 整列 → 开始 → 数字格式下拉 → 文本⁠ → 再粘贴。

然后是最关键的一条,请读两遍:

改单元格格式,救不回已经错的数据。

你把那个已经变成「2-Sep」的单元格改成“文本”格式,看到的会是一个五位数(日期序列值)——原值早没了。所以这招的核心是预防:⁠在数据进来之前指定格式。只有“看起来像日期但其实没被转成日期序列值”的情况,分列才救得回来。

补充两条实测结论⁠(都来自前面那篇论文和后续讨论):Google Sheets 不会⁠做这个转换;但你用 Excel 打开那个 Google Sheet,照样会转。所以最稳的交付姿势是:原始数据存 CSV UTF-8,⁠并且走导入、不双击。WPS 同样会转。


二、搭结构:Ctrl+T

2. 超级表:让公式、图表、透视表自己跟着数据长

普通区域是死的,超级表是活的。

你在 A1:F800⁠ 上写了 20 个公式、插了图、建了透视表。第 801 行加进来之后:公式不会自动往下填、图表范围不变、透视表还是那 800 行。你要手动改三处,而且很容易漏一处。

做法:光标放进数据区任一格 → Ctrl+T⁠ → 勾上“表包含标题” → 确定。

变成超级表之后,你免费得到这些:

  • 自动扩展:⁠在表格末尾下一行敲任何东西,这一行自动并入表,公式、条件格式、数据验证全部自动延续下去
  • 结构化引用:⁠写 =SUM(表1[浓度])⁠ 而不是 =SUM(F2:F801)。你在中间插一列,公式不会错位,因为它认的是列名,不是坐标
  • 切片器:⁠插入 → 切片器,点一下就筛,拿给导师看的时候他自己会玩
  • 汇总行:⁠表设计 → 勾“汇总行”(快捷键 Ctrl+Shift+T),⁠最后一格的下拉里能直接选求和 / 平均值 / 计数
  • 透视表数据源写表名,⁠刷新之后新数据自动进来,再也不用手动改数据源

两个必须注意的点:

一是 别用 Ctrl+Shift+L⁠ 冒充它。Ctrl+Shift+L⁠ 只是加了个筛选箭头,它不是超级表,⁠加行时公式照样不会自己往下填。

二是 表格里不能有空行、空列,列标题不能重名。超级表碰到整行空白就断在那儿了;同一列里 样本编号⁠ 和 样本编号 ⁠(尾部多一个空格)也被算成两个不同的东西——这类尾部空格是跨表匹配失败的头号元凶,用 TRIM()⁠ 清一遍。


三、清洗:拆开它、补全它

3. Ctrl+E⁠ 快速填充 + 分列:把「12.3 mg/L」拆成两列

仪器导出的表经常长这样:浓度这一列的值是 12.3 mg/L。数字和单位黏在一起,整列是文本,SUM⁠ 出来是 0。

两条路,看你要不要可复算:

分列(一次性、结果稳定):⁠选中该列 → 数据 → 分列 → 分隔符号 → 勾“空格”(或勾“其他”填 /)⁠→ 下一步 → 列数据格式选“常规” → 完成。数字部分自动变成真数值。

快速填充 Ctrl+E⁠(更快、但要检查):⁠在旁边空列手敲一个你期望的结果,再敲第二个,然后按 Ctrl+E。Excel 会识别出你的模式,把整列填满。

它能干的事比你想的多:拆字符串、合并两列(编号 + 姓名)、从一串里抽出数字或字母、统一格式(批量补前导零、加后缀 mg/L)。

但 Ctrl+E⁠ 有两条硬边界,必须知道:

  • 它是一次性猜测,不是公式。⁠ 源数据改了它不会重算,也不跟着筛选变。要能重算就用函数:Microsoft 365 有 TEXTBEFORE⁠ / TEXTAFTER⁠ / TEXTSPLIT⁠ / REGEXEXTRACT,⁠旧版用 LEFT⁠ / RIGHT⁠ / MID⁠ 配 FIND
  • 它可能猜错,而且错得很隐蔽。⁠ 填完必须翻到底检查一遍⁠——尤其是列里格式不统一的时候(有的行是 12.3 mg/L,⁠有的是 12.3mg/L,⁠有的还带了个空格)。给 2—3 个样例⁠再按 Ctrl+E,⁠准确率会高很多

顺带说一条数据整理的规矩,它比技巧本身更重要:

一列只放一个变量,单位写进表头,不要写进单元格。

表头写 浓度 (mg/L),⁠单元格里只写 12.3。这是 tidy data 的基本要求,也是后面透视表能不能拖、图能不能直接画、R 和 Python 能不能直接读的前提。同理,“未检出”请留空单元格,不要写文字⁠——一个文字就能让整列在透视表里变成“计数”,后面第 5 招会讲。

4. XLOOKUP 换掉 VLOOKUP,配上 4 个动态数组函数

VLOOKUP 有三个坑,任何一个都够你换掉它:

  • 只能从左往右查。返回值在查找列左边就抓瞎,得靠 INDEX⁠ + MATCH⁠ 绕
  • 第 3 参数是“列序号”。你在查找区里插一列,所有公式静默错位,⁠而且不报错
  • 第 4 参数省略 = 近似匹配。这是最阴的一个:如果查找列没有按升序排好,VLOOKUP 返回的是错误结果,并且不会给你任何提示。⁠ 多少人的数据错在这儿,自己都不知道

换成 XLOOKUP,⁠语法是:

=XLOOKUP(查找值, 查找列, 返回列, [找不到时返回什么], [匹配模式], [搜索模式])

好处是:默认精确匹配、⁠返回列可以在查找列左边、⁠第 4 参数可以写 "未匹配"⁠(从此再也不会看到满屏 #N/A)。

四个配套的现代函数⁠(Microsoft 365 / Excel 2024;Excel 2021 有一部分;Excel 2019 及更早一个都没有):

函数
干什么
典型用法
UNIQUE
去重,出一张唯一值清单
列出所有不重复的样本编号,顺带数个数
FILTER
按条件筛出一整组行
只挑出“处理组 = A”且“浓度 > 10”的行
SORT⁠ / SORTBY
排序(结果会“溢出”自动扩)
按另一列的值排序
GROUPBY⁠ / PIVOTBY
用公式做分组汇总
直接嵌进报表的汇总区,不用建透视表对象

再往上,Microsoft 365 近两年还陆续加了 TRIMRANGE⁠(把溢出范围里多余的空行空列裁掉)和 REGEXTEST⁠ / REGEXEXTRACT⁠ / REGEXREPLACE⁠(正则三件套,处理编号、样本码非常好用)。

怎么确认你有没有:⁠在任意单元格敲 =GROUPBY(,⁠看 Excel 给不给自动补全。会补全就是有,不补全就是没有,⁠比查版本号快。

匹配之前,还有一步必做:先查重复。XLOOKUP⁠ 和 VLOOKUP⁠ 遇到重复的查找键,只返回第一个,⁠且不提醒你。动手前先数一数:=COUNTA(UNIQUE(表1[样本编号]))⁠ 和 =COUNTA(表1[样本编号])⁠ 两个数是不是一样。不一样就先处理重复(数据 → 删除重复值,或 开始 → 条件格式 → 突出显示单元格规则 → 重复值,先看一眼再删)。


四、汇总:透视表 30 秒出分组均值

5. 数据透视表 + 切片器

场景:3 个处理组 × 4 个时间点 × 3 次重复,要算每组的均值和标准差。

用 AVERAGEIFS⁠ 写 12 个公式,不如透视表 30 秒。

做法:光标放进超级表⁠里 → 插入 → 数据透视表⁠ → 确定 → 右侧字段列表里拖:分组拖到“行”,时间点拖到“列”,指标拖到“值”。

四个几乎人人都会踩的坑:

① 数据源要用超级表名,不要用 A1:F800。⁠ 用区域的话,加了行透视表不会跟着扩,⁠你得手动改数据源(分析 → 更改数据源)。用超级表名,刷新之后新数据自动进来。

② 改了源数据不会自动更新。⁠ 要刷新:右键 → 刷新;或者 Ctrl+Alt+F5⁠ 刷新全部。打印前、截图前、导出前,都刷一次。

③ 默认可能是“计数”而不是“求和”。⁠ 只要那一列里混进了一个文本单元格(比如某格写了“未检出”),Excel 会把整列当文本处理,值字段默认给你“计数”。所以第 3 招那句“留空、别写文字”在这里就兑现了。

④ 标准差要去下拉列表最底下翻。⁠ 双击值字段 → 值字段设置 → “值汇总方式”里除了求和 / 计数 / 平均值,还有 StdDev⁠(样本标准差)和 StdDevp⁠(总体标准差)。做实验数据一般要的是 StdDev。

顺手把切片器加上:⁠分析 → 插入切片器。给导师看的时候他能自己点着筛,比你在旁边帮他改筛选条件强。

透视表做不了的事:⁠比如“均值 ± 标准差”要显示在同一格里,透视表只能分行出。这时候用 GROUPBY⁠ 出两列再拼,或者接受分行显示——别为了排版去手打数字,⁠一旦手打,它就再也不会跟着源数据变了。


五、复用:把「每月重做一遍」变成「点一下刷新」

6. Power Query:把清洗步骤录下来

场景:每月从仪器导出 12 个 CSV;每学期收 8 个班的实验报告表。每次复制粘贴半小时,而且每次手工操作都可能漏一步——漏的那一步,三个月后才被发现。

Power Query 的价值就一句话:把清洗步骤录下来,下次换数据一键重跑。

做法(以“合并一个文件夹里的所有 CSV”为例):

  1. 数据 → 获取数据 → 从文件 → 从文件夹
  2. 选文件夹 → 确定 → 在预览窗口点 “组合”⁠(下拉里可选“合并并转换数据” / “合并并加载”)
  3. 选一个样例文件⁠(默认第一个)→ 确定 → Power Query 编辑器打开
  4. 在编辑器里做清洗:删除不需要的列(主页 → 删除列)、点列头的类型图标指定列类型、⁠筛选、拆分列、填充向下——右侧“应用的步骤”会一条条记下来,⁠可以点回去改、可以删掉某一步
  5. 主页 → 关闭并上载

以后怎么用:把新 CSV 丢进那个文件夹 → 打开总表 → 右键刷新⁠(或 数据 → 全部刷新)。新文件自动进来,所有清洗步骤自动重跑一遍。

三条纪律:

  • 文件夹里只放要合并的文件。⁠ 多一个无关文件,就会被一起合进去
  • 所有文件的列名要一致。⁠ 顺序无所谓——Power Query 是按列名匹配的,这点比手工粘贴宽容得多
  • 样例文件选最有代表性的那个。⁠ 列类型是按样例文件推断的,样例选偏了,后面所有文件的类型都会错

它的边界也要说清楚:⁠Power Query 适合“结构固定、会重复来活”的场景,一次性小活儿不值得开。另外它不会动你的原始数据⁠——所有步骤只在上载时输出一张新表,原始 CSV 原地不动。这一点比直接在原表上手改安全得多,也是我推荐用它替代手工清洗的真正原因。

还有一条很实用:如果你只是想“导入 CSV 但不想被改格式”,Power Query 同样是正解。⁠ 导入时手动把那几列的类型点成“文本”(ABC 图标),日期是日期、编号是编号,谁也不许动谁。


交数据前的 5 分钟:四件事

第一件:看绿色三角。⁠ 单元格左上角那个绿色小三角,意思是“数字以文本形式存储”。如果看不到,先去 文件 → 选项 → 公式 → 启用后台错误检查⁠ 把它打开。选中整列 → 点旁边的黄色感叹号 → “转换为数字”。

注意:不要选“忽略错误”。⁠ 那只是把提示关掉,问题还在,而且下次你再也看不见它了。

第二件:Ctrl+⁠ 反引号键(Tab 上方那个),显示公式本身。⁠ 扫一遍:有没有 #N/A、#VALUE!、#REF!;⁠有没有哪一行的公式没拖到底;有没有哪个公式的引用范围跟别人不一样。这一步能抓出大部分“结果看着不太对但说不上哪儿不对”。

第三件:F5⁠ → 定位条件 → 空值。⁠ 一次性把所有漏填的格子选出来,标个黄底。

空值的危害在于它的两面性:AVERAGE⁠ 会忽略⁠空单元格,但不会忽略写了 0 的单元格。同样是“这一组均值偏低”,一个是因为漏测(应该排除),一个是因为真的测到 0(应该计入)——结果完全一样,含义天差地别。⁠ 所以宁可留空,不要顺手填 0。

第四件:原始数据另存一份只读的 CSV。⁠ 加工前的那份,永远别改。所有操作都在副本上做。


顺手记 8 个键

快捷键
作用
Ctrl+T
建超级表
Ctrl+E
快速填充
Ctrl+Shift+L
加 / 去筛选箭头
Ctrl+;插入当前日期(记录实验日期很好用;Ctrl+Shift+;⁠ 是当前时间)
Alt+;只选定可见单元格——复制筛选后的结果必用,⁠否则会把被筛掉的行一起粘出来
F5⁠ → 定位条件
空值 / 公式 / 常量 / 可见单元格,批量选中
Ctrl+⁠ 反引号键
显示 / 隐藏公式
Ctrl+Alt+F5
刷新工作簿里的所有数据

三条避坑提醒

1. 别双击 CSV。这是本文最重要的一句话。

双击打开 = 让 Excel 猜类型;走“数据 → 从文本/CSV”导入 = 你告诉 Excel 类型。基因名、样本编号、18 位测序 ID、带前导零的编号,全栽在这个动作上。养成习惯只需要三天,救回来的可能是一整章数据。

2. 版本差异比你想的大,动手前先确认自己有什么。

  • XLOOKUP⁠ / FILTER⁠ / SORT⁠ / UNIQUE:⁠Microsoft 365、Excel 2021、Excel 2024 有,Excel 2019 及更早一个都没有
  • GROUPBY⁠ / PIVOTBY⁠ / TRIMRANGE⁠ / REGEX*⁠ 这几个更晚,官方文档列的是 Microsoft 365 与 Excel 2024,旧版大概率没有
  • 顺带提醒一个时效问题:Excel 2019 的扩展支持已经在 2025 年 10 月结束,⁠Excel 2021 的支持周期也快到了,Excel 2024 到 2029 年 10 月。还在用 2019 的,升级这件事真的该排上日程了
  • 确认方法:文件 → 账户 → 关于 Excel⁠ 看版本号和更新通道;或者直接敲 =XLOOKUP(⁠ 看有没有自动补全。企业版如果被 IT 锁在半年通道,新函数会晚几个月才到
  • WPS 不一样:⁠动态数组、Power Query 的支持程度都和 Excel 有出入,别照搬本文的菜单路径

3. Excel 是加工车间,不是仓库。

官方规格是一张表最多 1,048,576 行 × 16,384 列,⁠看着够用,但真上到几十万行,透视表和查找函数会明显变卡。更根本的问题是 Excel 没有数据类型约束⁠——谁都能在数字列里敲一个“待补”、在日期列里敲一个“/”。

所以:原始数据留一份只读的 CSV,Excel 只用来加工,加工过程记在 Power Query 里。⁠ 哪天导师问“这个数是怎么来的”,你能一步步指给他看,而不是只能说“我记得是这样算的”。

相关学习资料