RIGHT 函数:语法、示例与错误排查
更新于 2026-10-14 · 免费 · 兼容 Excel 与 Google Sheets
语法
=RIGHT(text, [num_chars])快速答案
RIGHT 从单元格末尾取字符:=RIGHT(A2, 4) 把「AE-2026-041」变成「-041」。字符数省略时默认 1,要得比文本长只会原样返回整格内容,而且结果永远是文本——哪怕看着像数字。
语法
=RIGHT(text, [num_chars])| 参数 | 含义 |
|---|---|
| text | 存放待切文本的单元格或字面量。必填。 |
| [num_chars] | 从末尾取几个字符:4 取后四个。省略时 RIGHT 只取一个。必须为 0 或正数——负数返回 #VALUE!。 |
视区域设置不同,参数可能用分号而不是逗号分隔:=RIGHT(A2; 4)。在用逗号作小数分隔符的国家/地区是标准行为。
RIGHT 数的是字符,不是字节也不是词:一个字母、一个数字、一个空格、一个表情都各占一个计数。位置从末尾倒着数——不存在第 0 个字符。
基本示例
=RIGHT(A2, 4)定宽数据的主力:产品编码「AE-2026-041」交出后缀「-041」,电话号码交出后四位,账号交出校验位——只要有效信息永远在最后 N 个字符,就是它的主场。
=RIGHT(A2, LEN(A2) - SEARCH(" ", A2))动态升级版:SEARCH 找到第一个空格,LEN 量出整格长度,RIGHT 取空格之后的全部,所以「Jane Doe」得到「Doe」,「Winston Churchill」得到「Churchill」——切点跟着数据走,不再写死数字。
=RIGHT(A2, LEN(A2) - FIND("@", A2))从「john.doe@example.com」取出邮箱域名——「example.com」。区分大小写时用 FIND(大小写敏感);不在乎大小写或要用通配符时用 SEARCH。
=IFERROR(RIGHT(A2, LEN(A2) - SEARCH("-", A2)), A2)生产环境版本:没有横杠的行本来会因 SEARCH 找不到而炸成 #VALUE!。包上 IFERROR 后,这些行原样返回,整列不再崩。
RIGHT 切出来的哪怕是数字也返回文本:RIGHT(123456, 3) 得到文本「456」,不能求和。数字提取要包 VALUE(=VALUE(RIGHT(A2, 3)));另外日期底层是序列号——RIGHT 切的是序列号而不是显示的日期。
常见错误与修复方法
| 症状 | 最常见原因 | 修复 |
|---|---|---|
| #VALUE! | 字符数为负数——或喂给它的 FIND/SEARCH 没找到分隔符,FIND 自己先返回了 #VALUE!。 | 用正数计数,给查找分隔符的公式包 IFERROR 兜底,或先排查缺分隔符的数据行。 |
| 只返回一个字符 | 省略了 num_chars——不写时 RIGHT 默认取 1。 | 补上计数:=RIGHT(A2, 4)。真的只想要一个字符时,显式写 1 也能让意图更清楚。 |
| 切点早一个或晚一个字符 | 分隔符附近差一:不含分隔符就不用额外加减,要保留分隔符就减 1。 | 拿一行数一遍——LEN 减去分隔符位置,得到的就是分隔符之后那段(不含分隔符本身)的字符数。 |
| 取出的数字不能计算 | RIGHT 永远返回文本,所以「007」还是「007」,「456」不求和。 | =VALUE(RIGHT(A2, 3)) 把切出的数字转成真数值(前导零会丢,它们本来就是文本)。 |
| 结果整体前移 | 单元格末尾有看不见的填充空格,最后几个字符是空格而不是字母。 | 先清洗:=RIGHT(TRIM(A2), 4),或一次性给整列去空格。 |
不算错误但很经典:向 RIGHT 要的字符数超过文本长度时,返回整格内容而不报错。=RIGHT("Hi", 50) 就是「Hi」——做「最多取 N 个字符」的安全截断很好用,但在你期待警告时会很困惑。
RIGHT 与 MID 对比
| RIGHT | MID | |
|---|---|---|
| 从哪里开始切 | 永远是最后一个字符 | 你指定的任意位置:=MID(A2, 5, 3) |
| 参数 | 文本 + 字符数 | 文本 + 起始位置 + 字符数 |
| 最适合 | 后缀、姓氏、文件扩展名、校验位 | 中间片段——区号、两个分隔符之间的部分 |
| 动态终点 | 只有起点能动(靠 FIND/SEARCH 和 LEN) | 两端都能动——FIND 可以喂给起始位置 |
RIGHT 就是末尾锚定不动的专用 MID:当单元格够长时,=RIGHT(A2, 4) 与 =MID(A2, LEN(A2) - 3, 4) 等价。当片段可能出现在末尾以外的任何位置时,就换 MID——解析公式里这两个函数经常嵌套在一起。
RIGHT 与分列、TEXTAFTER 对比
| RIGHT(+ FIND/SEARCH) | 分列 | TEXTAFTER(Microsoft 365) | |
|---|---|---|---|
| 输出 | 新列里的活公式,源数据不动 | 就地拆分单元格,不小心会覆盖旁边的列 | 活公式:=TEXTAFTER(A2, " ") |
| 分隔符逻辑 | 用 FIND/SEARCH 和 LEN 减偏移手搭 | 对话框驱动,重复分隔符可视化处理 | 一个参数——不用 FIND,不用算 LEN |
| 新增行能否存活 | 能——向下填充即自动重算 | 不能——新数据要重跑 | 能——天生动态 |
| 可用版本 | 所有 Excel 版本和 Google Sheets | 所有 Excel 版本 | 仅 Excel 365 / 2021 及以后 |
按生命周期选:要扛住反复导入和刷新的解析用 RIGHT 公式,对成品表做一次性整形用分列,Excel 够新且只需要「分隔符之后的全部」就用 TEXTAFTER。
Google Sheets 中的 RIGHT
- 语法和默认值完全一致——上面的公式可原样粘贴到 Sheets。
- 逗号作小数分隔符的地区用分号:=RIGHT(A2; 4),与 Excel 一样。
- FIND 仍区分大小写,SEARCH 仍不区分且支持通配符——搭档行为一致。
- 按模式取后缀时 Sheets 还有 REGEXEXTRACT,一条表达式就能取「最后一个点之后的全部」,不用嵌套 FIND。
限制与进阶技巧
- 一次调用只切一刀:把一个编码拆三段需要三列——LEFT、MID、RIGHT 并排是经典解析布局。
- FIND 和 SEARCH 要有意识地选:空格、@ 这类不区分大小写的分隔符用 SEARCH,「a」和「A」必须区分时用 FIND。
- 每个靠分隔符的提取都包 IFERROR——否则一行缺分隔符,#VALUE! 就会顺着整列蔓延。
- 切完的数字仍然是文本:=VALUE(RIGHT(A2, 3)) 是回到可计算数字的路。
- 要取第 n 个分隔符之后的文本,嵌套 SEARCH:SEARCH("-", A2, SEARCH("-", A2) + 1) 找到第二道横杠,RIGHT 从那里取到末尾。
把 RIGHT 当作解析流水线的最后一站:TRIM 去填充、SEARCH 找分隔符、LEN 量长度、RIGHT 切取、结果是数字再用 VALUE 转换。每一站独占一列,下个月导入格式变了,只需要改一条公式。
相关工具
相关函数
常见问题
RIGHT 函数在 Excel 中有什么用?
它从单元格末尾返回指定数量的字符:=RIGHT(A2, 4) 取后四个。不写数量时只取一个;与 FIND 或 SEARCH 加 LEN 搭配,切点就能跟着空格、@ 等分隔符移动。
怎么用 RIGHT 提取空格之后的文本?
先定位分隔符再减长度:=RIGHT(A2, LEN(A2) - SEARCH(" ", A2)) 取第一个空格之后的全部。SEARCH 不分大小写,FIND 分;整体再包一层 IFERROR,缺分隔符的行就不会出错。
为什么 RIGHT 返回 #VALUE!?
要么字符数为负,要么内嵌的 FIND/SEARCH 没找到分隔符——FIND 找不到时自己就返回 #VALUE!,RIGHT 跟着继承。用 IFERROR 兜底,并检查哪些行缺分隔符。
RIGHT 和 MID 有什么区别?
RIGHT 永远从最后一个字符开始倒着切,只需一个计数;MID 从你指定的位置开始,需要起始位置和计数两个参数。RIGHT 适合后缀和姓氏,MID 适合埋在中间的片段。
为什么 RIGHT 取出的数字不能计算?
RIGHT 返回文本,它的「456」是标签不是值。用 =VALUE(RIGHT(A2, 3)) 转换——但注意前导零在真数字里会消失,因为它们本来就只是文本。
num_chars 比文本长会怎样?
RIGHT 直接返回整格内容——=RIGHT("Hi", 50) 就是「Hi」,不报错也不补位。这条规则让超大计数可以安全地表达「最多取 N 个字符」。
RIGHT 在 Google Sheets 里能用吗?
能——名字、参数、FIND/SEARCH 搭档和逗号小数地区的分号约定都一样。Sheets 另外还提供基于正则提取的 REGEXEXTRACT。
准备好处理你自己的文件了吗?
打开Excel 文本分列 — 免费