You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel如何查找单元格内重复六位数字符串并替换为单个实例

Bates编号重复范围清理方案

以下提供两种可直接落地的实现方式,优先推荐公式方案,复杂场景可使用VBA方案:

方案1:Excel公式实现

适用版本:Excel 365 / 2021及以上

由于所有Bates编号范围均为固定的六位数字-六位数字13字符格式,且默认位于单元格末尾,可直接使用以下公式(待处理内容存放在A1单元格):

=LET(
    num_part, RIGHT(A1,13),
    first_num, LEFT(num_part,6),
    second_num, RIGHT(num_part,6),
    IF(first_num=second_num, LEFT(A1, LEN(A1)-7), A1)
)

公式逻辑说明:

  • 提取单元格末尾13位的编号范围片段
  • 分别截取横杠前后的6位编号做对比
  • 若二者相同则删除末尾的-XXXXXX共7个字符,否则保留原内容

适用版本:旧版Excel(无LET函数)

可直接展开变量得到兼容公式:

=IF(LEFT(RIGHT(A1,13),6)=RIGHT(RIGHT(A1,13),6), LEFT(A1, LEN(A1)-7), A1)

方案2:VBA自定义函数实现

如果单元格内容格式不固定(比如编号范围不在末尾、前缀存在特殊符号),可使用正则匹配的VBA方案,适配性更强:

  1. 按Alt+F11打开VBA编辑器,右键点击当前工作簿名称→「插入」→「模块」
  2. 粘贴以下代码:
Function CleanBates(inputStr As String) As String
    Dim regEx As Object
    Set regEx = CreateObject("VBScript.RegExp")
    ' 匹配任意位置的相同六位数字重复出现的范围格式
    regEx.Pattern = "(\d{6})-\1"
    regEx.Global = True
    CleanBates = regEx.Replace(inputStr, "$1")
End Function
  1. 回到表格界面,在空白单元格输入=CleanBates(A1)即可调用,自动将所有重复的Bates编号范围替换为单个编号。

内容的提问来源于stack exchange,提问作者Livia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:03