Vba 宏代码,用于从单列中删除重复的单元格,并对其余列重复相同的操作
我想创建宏来删除单列中的重复单元格,并对其余列重复相同的操作 我有代码对单个列及其工作区执行此操作,但我无法将此代码转换为对其余列重复相同的过程 有人能帮我吗Vba 宏代码,用于从单列中删除重复的单元格,并对其余列重复相同的操作,vba,excel,Vba,Excel,我想创建宏来删除单列中的重复单元格,并对其余列重复相同的操作 我有代码对单个列及其工作区执行此操作,但我无法将此代码转换为对其余列重复相同的过程 有人能帮我吗 Sub Delete_Dupes2() Dim lastrow As Long Application.ScreenUpdating = False With Sheet2 lastrow = .Cells(Rows.Count, 1).End(xlUp).Row .Range("$A$1:$A$" & l
Sub Delete_Dupes2()
Dim lastrow As Long
Application.ScreenUpdating = False
With Sheet2
lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("$A$1:$A$" & lastrow).RemoveDuplicates Columns:=1, Header:=xlYes
End With
Application.ScreenUpdating = True
End Sub
以下是前10列:
Sub Delete_Dupes3()
Application.ScreenUpdating = False
Dim LastRow As Long
With Sheet2
For j = 1 To 10
LastRow = .Cells(.Rows.Count, j).End(xlUp).Row
.Range(.Cells(1, j), .Cells(LastRow, j)).RemoveDuplicates Columns:=1, _
Header:=xlYes
End If
End With
Application.ScreenUpdating = True
End Sub
顺便说一句,在您的屏幕截图(可能是虚拟数据)中,没有标题,但参数的说法正好相反:
标题:=xlYes
这里是前10列:
Sub Delete_Dupes3()
Application.ScreenUpdating = False
Dim LastRow As Long
With Sheet2
For j = 1 To 10
LastRow = .Cells(.Rows.Count, j).End(xlUp).Row
.Range(.Cells(1, j), .Cells(LastRow, j)).RemoveDuplicates Columns:=1, _
Header:=xlYes
End If
End With
Application.ScreenUpdating = True
End Sub
顺便说一句,在您的屏幕截图(可能是虚拟数据)中,没有标题,但参数的说法正好相反:标题:=xlYes
另一种方式(R3uK在我测试答案时发布)。我添加了两种引用范围的方法-第一种返回行号,第二种返回对单元格的引用 正如R3uK和我自己所说的,当你用数字而不是字母名称引用列时,我发现使用
.Range(.Cells(1,1),.Cells(lastrow,1))
比使用.Range($A$1:$A$”&lastrow)更容易
Option Explicit
Sub Test()
Delete_Dupes2 1
Delete_Dupes2 3
Delete_Dupes2 ColumnNum:=5
Dim x As Long
For x = 1 To 10
Delete_Dupes2 ColumnNum:=x
Next x
End Sub
Sub Delete_Dupes2(ColumnNum As Long)
Dim lastrow As Long
Dim lastrow1 As Range
Application.ScreenUpdating = False
With Sheet2
lastrow = .Cells(Rows.Count, ColumnNum).End(xlUp).Row
.Range(.Cells(1, ColumnNum), .Cells(lastrow, ColumnNum)).RemoveDuplicates Columns:=1, Header:=xlYes
'or
'Set lastrow1 = .Cells(Rows.Count, ColumnNum).End(xlUp)
'.Range(.Cells(1, ColumnNum), lastrow1).RemoveDuplicates Columns:=1, Header:=xlYes
End With
Application.ScreenUpdating = True
End Sub
编辑:
或者您可以将过程名称更改为:
Sub Delete\u Dupes2(ColumnNum与工作表一样长,wrkSht与工作表一样长)
将带有Sheet2的行更改为:
带wrkSht
将您的呼叫(测试)线路更改为:
Delete_Dupes2 1, Sheet2
Delete_Dupes2 3, Sheet1
Delete_Dupes2 ColumnNum:=5, wrkSht:=ThisWorkbook.Worksheets("AnotherSheet")
Dim x As Long
For x = 1 To 10
Delete_Dupes2 ColumnNum:=x, wrkSht:=ActiveWorkbook.Worksheets("ASheetInAnotherFile")
Next x
另一种方式(R3uK在我测试答案时发布)。
我添加了两种引用范围的方法-第一种返回行号,第二种返回对单元格的引用
正如R3uK和我自己所说的,当你用数字而不是字母名称引用列时,我发现使用.Range(.Cells(1,1),.Cells(lastrow,1))
比使用.Range($A$1:$A$”&lastrow)更容易
Option Explicit
Sub Test()
Delete_Dupes2 1
Delete_Dupes2 3
Delete_Dupes2 ColumnNum:=5
Dim x As Long
For x = 1 To 10
Delete_Dupes2 ColumnNum:=x
Next x
End Sub
Sub Delete_Dupes2(ColumnNum As Long)
Dim lastrow As Long
Dim lastrow1 As Range
Application.ScreenUpdating = False
With Sheet2
lastrow = .Cells(Rows.Count, ColumnNum).End(xlUp).Row
.Range(.Cells(1, ColumnNum), .Cells(lastrow, ColumnNum)).RemoveDuplicates Columns:=1, Header:=xlYes
'or
'Set lastrow1 = .Cells(Rows.Count, ColumnNum).End(xlUp)
'.Range(.Cells(1, ColumnNum), lastrow1).RemoveDuplicates Columns:=1, Header:=xlYes
End With
Application.ScreenUpdating = True
End Sub
编辑:
或者您可以将过程名称更改为:
Sub Delete\u Dupes2(ColumnNum与工作表一样长,wrkSht与工作表一样长)
将带有Sheet2的行更改为:
带wrkSht
将您的呼叫(测试)线路更改为:
Delete_Dupes2 1, Sheet2
Delete_Dupes2 3, Sheet1
Delete_Dupes2 ColumnNum:=5, wrkSht:=ThisWorkbook.Worksheets("AnotherSheet")
Dim x As Long
For x = 1 To 10
Delete_Dupes2 ColumnNum:=x, wrkSht:=ActiveWorkbook.Worksheets("ASheetInAnotherFile")
Next x