我在A栏中有数字.C列的数字较小。我想创建一个宏,它将开始测试C中的每个值,如果它存在于A中,从C3开始。如果它存在,我希望宏在C中删除该值并向上移动C列中的任何内容,这样我就不会在数据之间有空单元格(注意:我不想删除整行)。然后宏应该继续测试C中的其他单元格,直到它找到一个空单元格,然后它应该在那里停止。
请帮我写一下这段代码。我不是专家VBA。
答案 0 :(得分:0)
尝试一下:
Sub KleanC()
Dim Kill As Range, A As Range, C As Range, r As Range
Dim wf As WorksheetFunction, N As Long
Set wf = Application.WorksheetFunction
Set A = Range("A:A")
Set C = Range("C3:C" & Cells(Rows.Count, "C").End(xlUp).Row)
For Each r In C
On Error Resume Next
v = r.Value
N = wf.Match(v, A, 0)
If Err.Number = 0 Then
If Kill Is Nothing Then
Set Kill = r
Else
Set Kill = Union(r, Kill)
End If
Else
Err.Number = 0
On Error GoTo 0
End If
Next r
If Kill Is Nothing Then
Else
Kill.Delete (xlShiftUp)
End If
End Sub