听起来像@BruceWayne指出你在正确的方向为你需要 - 删除重复。
作为@Apurv Pawar显示你可以使用一个循环,但他选择单元格(如果有任何代码说选择或激活一个单元只是不....你可以参考一个单元格而不选择)。
另一种方法是有一个程序来删除单元格,另一个程序告诉它要查看哪个工作簿,工作表和单元格。
Sub DeleteRedundant(CheckRange As Range)
If CheckRange = CheckRange.Offset(1) And CheckRange.Offset(, 1) = CheckRange.Offset(1, 1) Then
CheckRange.Offset(1).Resize(, 2).ClearContents
End If
End Sub
上面的代码将接受传递给它的范围。
它会检查通过的单元等于低于自身细胞:
CheckRange = CheckRange.Offset(1)
它将然后检查细胞传递的单元格的右边等于低于该值:
CheckRange.Offset(, 1) = CheckRange.Offset(1, 1)
如果值匹配它会看通过的单元下面的单元格,调整,为两个单元,宽清除这两个单元格的内容:
CheckRange.Offset(1).Resize(, 2).ClearContents
有了这个过程中,我们可以通过它的各种范围内引用,操作上:
Sub Test()
DeleteRedundant Workbooks("Excel Worksheet1.xlsx").Worksheets("Sheet1").Range("A6")
DeleteRedundant Workbooks("Excel Worksheet2.xlsx").Worksheets("Sheet2").Range("D5")
'Pass every other cell to the procedure in a loop.
'So will pass A2, A4, A6 - Cells(2,1), Cells(4,1) and Cells(6,1)
Dim x As Long
For x = 2 To 20 Step 2
DeleteRedundant Workbooks("Excel Worksheet1.xlsx").Worksheets("Sheet1").Cells(x, 1)
Next x
End Sub
但是,正如@BruceWayne说 - 你可能只需要对数据功能区中的删除重复按钮。
要重复代码,您需要将其嵌入到每次切换变量的'Loop'中。 – dwirony
我这么认为。但我真的不知道如何实现这种可变开关。 (对不起刚刚学习VBA编程) –
你期望循环通过什么?有几种方法可以完成循环,选择哪一种最有效,取决于你循环的内容。你也可以为'y'循环中的每个x,或者'Do While'循环做一个'... – BruceWayne