如果 C 列单元格有值,则在第 C 列表 2 中填写“确定”

问题描述 投票:0回答:1

如果工作表 1 的 C 列中有一个值,我想使用“确定”将文本添加到工作表 2 的 C 列。

以下是表 1 上的数据示例:

NIP 姓名 毕业了
8593 阿丽亚娜 2023/04/12
8594 迈克
8595 哈利 2023年8月20日

表 2 上的数据:

NIP 姓名 推荐
8593 阿丽亚娜
8595 哈利
8596 约翰

两张工作表上的 A 列应该有一个索引匹配功能,因为这些工作表不包含相同的列表。我希望使其具有动态范围。

这是我当前的代码,但它给出了运行时类型不匹配

Dim lw As Long
lw = sws.Cells(sws.Rows.Count, "A").End(xlUp).Row

Dim p As Long
p = sws.Range("C" & Rows.Count).End(xlDown).Rows
Dim u As Long

For u = 2 To lw
    If p <> 0 Then
        dws.Cells(i, "C").Value = "OK"
    End If
Next u
excel vba excel-2010
1个回答
0
投票
  • 将数据加载到数组中并一次性填充输出以提高效率
Option Explicit
Sub Demo()
    Dim objDic As Object, arrData
    Dim i As Long, sKey As String, rngOK As Range
    Dim oSht1 As Worksheet, oSht2 As Worksheet
    Set oSht1 = Sheets("Sheet1") ' modify as needed
    Set oSht2 = Sheets("Sheet2")
    Set objDic = CreateObject("scripting.dictionary")
    arrData = oSht1.Range("A1").CurrentRegion.Value
    For i = LBound(arrData) + 1 To UBound(arrData)
        If Len(arrData(i, 3)) > 0 Then
            sKey = arrData(i, 1) & "|" & arrData(i, 2)
            objDic(sKey) = ""
        End If
    Next i
    arrData = oSht2.Range("A1").CurrentRegion.Value
    For i = LBound(arrData) + 1 To UBound(arrData)
        sKey = arrData(i, 1) & "|" & arrData(i, 2)
        If objDic.exists(sKey) Then
            If rngOK Is Nothing Then
                Set rngOK = oSht2.Cells(i, 3)
            Else
                Set rngOK = Application.Union(rngOK, oSht2.Cells(i, 3))
            End If
        End If
    Next i
    If Not rngOK Is Nothing Then
        rngOK.Value = "OK"
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.