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

Excel VBA宏:比较列单元格匹配后写入新列故障求助

VBA两列内容比对写入功能修复方案

问题根因

  • 原代码中StrComp函数比对的是单元格地址字符串(如"A1"、"C1"这类地址文本),而非单元格内存储的实际业务内容,判断条件永远无法命中,因此不会执行写入操作。

修正后可运行代码

Sub Compare()
Dim i As Integer
Dim j As Integer
Dim RowNumberData As Long
Dim RowNumberConstant As Long
Dim DataVal As String
Dim ConstantVal As String
Dim DataRange2 As String
Dim ConstantRange2 As String
' 关闭屏幕刷新提升运行效率,避免界面闪烁
Application.ScreenUpdating = False
RowNumberData = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
RowNumberConstant = Sheet2.Cells(Rows.Count, 3).End(xlUp).Row
For i = 1 To RowNumberConstant
    ' 读取C列当前行实际内容用于比对
    ConstantVal = Sheet2.Range("C" & i).Value
    ConstantRange2 = "D" & i
    For j = 1 To RowNumberData
        ' 读取A列当前行实际内容用于比对
        DataVal = Sheet2.Range("A" & j).Value
        DataRange2 = "B" & j
        ' 比对单元格实际内容而非地址
        If StrComp(DataVal, ConstantVal, vbTextCompare) = 0 Then
            Sheet2.Range(ConstantRange2).Value = Sheet2.Range(DataRange2).Value
            ' 匹配到目标后直接跳出内层循环,减少无效遍历
            Exit For
        End If
    Next j
Next i
' 恢复屏幕刷新
Application.ScreenUpdating = True
End Sub

可选优化方案

  • 数据量超过1000行时,可先将两列数据全部读入VBA数组后再做比对,逐单元格读取的性能远低于数组操作。
  • 可添加匹配结果计数逻辑,便于确认最终匹配成功的条数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:15:04