如果工作表 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
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