夜雨聆风学习资料网

ARTICLE · 1337052

Excel VBA 自定义函数 CellDiff,一键对比两个文本差异

Excel VBA 自定义函数 CellDiff,一键对比两个文本差异
使用EXACT函数或者IF函数对比两个文本串可以得出两个文本串是否一致。只能告诉你有没有差别,看不到到底哪里不一样,长文本核对起来只能逐字肉眼查找,非常容易漏看,效率很低。如果你想要得到具体是哪里不一致要怎么办?
今天分享一个VBA 自定义函数 CellDiff,一键对比两个文本串具体的差异。它会自动忽略所有相同的内容,只提取中间不一样的内容,直观展示两边的差异。
一、函数核心功能详解

✅ 功能简述 CellDiff 用于对比两段文本字符串,自动识别两者相同的前缀、相同的后缀,剔除前后一致的部分,只返回中间存在差异的内容。

✅ 解决痛点

  • 原生 Excel 没有可以直接提取文本差异的内置函数
  • 不只是简单返回 “相同 / 不同”,直接展示差异内容,一眼看懂改动点;
  • 自动屏蔽前后一致文字,不会把整串文本全部输出,结果简洁干净;

✅ 逻辑说明

  • 如果两段文本完全一致:直接返回“相同”;
  • 两边都有差异:格式为“旧内容 → 新内容”;
  • 仅第一段多出内容:只输出第一段差异;
  • 仅第二段多出内容:只输出第二段差异。

二、函数语法与参数说明

函数语法:
CellDiff (文本1,文本2)
参数说明:
参数名称
参数类型
参数说明
是否必填
文本 1
文本 / 单元格
参与对比的第一段文本,一般填左侧原始内容单元格,如 A2
必填
文本 2
文本 / 单元格
参与对比的第二段文本,一般填右侧待核对内容单元格,如 B2
必填
三、实操案例
关注
重播 分享 赞
四、VBA代码
Function CellDiff(文本1 As String, 文本2 As String) As String    Dim i As Long, j As Long    Dim prefixLen As Long, suffixLen As Long    Dim len1 As Long, len2 As Long    Dim diff1 As String, diff2 As String    If 文本1 = 文本2 Then        CellDiff = "相同"        Exit Function    End If    len1 = Len(文本1)    len2 = Len(文本2)    prefixLen = 0    For i = 1 To len1        If prefixLen >= len2 Then Exit For        If mid(文本1, i, 1) = mid(文本2, i, 1) Then            prefixLen = prefixLen + 1        Else            Exit For        End If    Next i    suffixLen = 0    For i = 0 To len1 - prefixLen - 1        If suffixLen >= len2 - prefixLen Then Exit For        If mid(文本1, len1 - i, 1) = mid(文本2, len2 - i, 1) Then            suffixLen = suffixLen + 1        Else            Exit For        End If    Next i    diff1 = mid(文本1, prefixLen + 1, len1 - prefixLen - suffixLen)    diff2 = mid(文本2, prefixLen + 1, len2 - prefixLen - suffixLen)    If diff1 <> "" And diff2 <> "" Then        CellDiff = diff1 & " → " & diff2    ElseIf diff1 <> "" Then        CellDiff = diff1    Else        CellDiff = diff2    End IfEnd Function

五、使用方法

  1. 打开 Excel,按 Alt+F11 打开 VBA 编辑器;
  2. 右键工作表→插入→模块;
  3. 复制本文的 VBA 函数代码,粘贴到模块中;
  4. 关闭 VBA 编辑器,返回表格即可直接使用公式
往前精彩推荐:
VBA自定义函数 MultiShtCell 一键跨表取值
Excel/WPS自定义函数【CountAdd】一键统计
VBA自定义函数GetTopFrequency:一键提取出现频率最高的前 N 项
Excel 自定义函数GetKeyword按关键字截取固定长度文本,支持去重溢出

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

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

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

相关学习资料