首页 > 解决方案 > 删除重复项并对行进行排序

问题描述

我有两个不同的问题,但它们可能有相同的原因。

我首先需要删除工作表的所有重复行。A 列包含一个索引值,该索引值作为文本值导入,例如“1”、“2”...等。

我搜索并得到了这行代码:

VarAnzahlZeilen = 50 '(actually calculated values but they are correct (F8))
VarAnzahlSpalten =50 
     Worksheets("Filter").Range(Cells(2, 1), Cells(VarAnzahlZeilen, VarAnzahlSpalten)).RemoveDuplicates Columns:=Array(1), Header _
        :=xlNo

没有任何反应,所有重复的行仍在工作表中。

与应该对剩余行进行排序的下一行代码相同:

Worksheets("Filter").Range(Cells(2, 1), Cells(2, VarAnzahlSpalten)).Sort Key1:=Range("A2"), Header:=xlNo

什么都没发生。

显示了一个测试 msgbox 并且工作表/范围组合也是正确的(我可以更改值)。


整行将是重复的,因为导入是以这种方式工作的,但由于索引在 A 列中,我选择它作为重复的指标。

这是我当前的版本:

With Worksheets("Filter")
    .Range(.Cells(2, 1), .Cells(VarAnzahlZeilen, VarAnzahlSpalten)).RemoveDuplicates Columns:=Array(1), Header:=xlNo
    .Range(.Cells(2, 1), .Cells(VarAnzahlZeilen, VarAnzahlSpalten)).Sort Key1:=Range("A2"), Header:=xlNo
End With

标签: excelvba

解决方案


始终将您的范围引用限定为工作表对象,否则将隐式假定 ActiveSheet 引用:

With Worksheets("Filter")
    .Range(.Cells(2, 1), .Cells(VarAnzahlZeilen, VarAnzahlSpalten)).RemoveDuplicates Columns:=Array(1), Header:=xlNo
End With

“.Cells()”中的点是引用“With”语句中引用的对象(即“Worksheets("Filter")“)


推荐阅读