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

基于NIP匹配的Excel VBA需求:Sheet2列C依Sheet1列C值填OK

解决Sheet1与Sheet2匹配填充"OK"的VBA问题

原代码错误分析

原代码存在多处问题,直接导致运行时类型不匹配及逻辑失效:

  • 未定义sws(Sheet1)、dws(Sheet2)工作表对象,运行时会触发对象未定义错误
  • p = sws.Range("C" & Rows.Count).End(xlDown).Rows写法错误:Rows返回的是行集合对象,无法直接赋值给Long类型变量,这是类型不匹配错误的直接原因
  • 循环中误用未定义变量i,而非声明的循环变量u
  • 逻辑完全偏离需求:没有实现NIP匹配逻辑,仅通过判断p值填充,无法完成两表关联判断

正确实现代码

以下代码严格按照需求实现:通过NIP匹配两表,当Sheet1对应行Graduated列有值时,在Sheet2对应行Recommendation列填入"OK",同时支持动态数据范围:

Sub FillRecommendation()
    Dim sws As Worksheet, dws As Worksheet
    Dim lastRowS1 As Long, lastRowS2 As Long
    Dim ws1NIPRange As Range, ws1GradRange As Range
    Dim currentNIP As Variant, gradValue As Variant
    Dim i As Long
    
    ' 指定目标工作表
    Set sws = ThisWorkbook.Worksheets("Sheet1")
    Set dws = ThisWorkbook.Worksheets("Sheet2")
    
    ' 获取两表数据最后一行(动态适配数据变化)
    lastRowS1 = sws.Cells(sws.Rows.Count, "A").End(xlUp).Row
    lastRowS2 = dws.Cells(dws.Rows.Count, "A").End(xlUp).Row
    
    ' 定义Sheet1的NIP列和Graduated列数据范围
    Set ws1NIPRange = sws.Range("A2:A" & lastRowS1)
    Set ws1GradRange = sws.Range("C2:C" & lastRowS1)
    
    ' 遍历Sheet2每一行数据
    For i = 2 To lastRowS2
        currentNIP = dws.Cells(i, "A").Value
        ' 使用Index+Match逻辑匹配对应Graduated值
        gradValue = Application.Index(ws1GradRange, _
                    Application.Match(currentNIP, ws1NIPRange, 0))
        
        ' 匹配成功且Graduated列有值时填充"OK"
        If Not IsError(gradValue) And gradValue <> "" Then
            dws.Cells(i, "C").Value = "OK"
        Else
            dws.Cells(i, "C").Value = "" ' 无匹配或无毕业日期则清空
        End If
    Next i
End Sub

代码关键说明

  • 动态范围处理:通过Cells(Rows.Count, "A").End(xlUp).Row自动获取数据最后一行,无需手动指定范围
  • Index+Match逻辑:模拟工作表函数的匹配逻辑,精准关联两表的NIP数据
  • 错误处理:用IsError判断是否匹配成功,避免因无对应NIP导致运行报错
  • 条件判断:仅当匹配到的Graduated列有值时才填充"OK",完全符合需求

运行效果示例

执行代码后,Sheet2数据将更新为:

NIPNameRecommendation
8593ArianaOK
8595HarryOK
8596John

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:30:28