首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不擦除广告数据的情况下在单列中运行RemoveDuplicates?

如何在不擦除广告数据的情况下在单列中运行RemoveDuplicates?
EN

Stack Overflow用户
提问于 2016-08-23 06:50:45
回答 2查看 3.2K关注 0票数 1

我在Excel中使用VBA删除活动区域中的重复值,该区域的长度约为12000行,并且在单个列内。但是,当我在所选区域上运行RemoveDuplicates命令时,它会删除重复值所在的整个行。我的代码显示如下:

代码语言:javascript
复制
Sub Dedupe()

Range("B1").Select

ActiveCell.Resize(12109, 1).Select

ActiveCell.RemoveDuplicates Columns:=1, Header:=xlYes

End Sub

我的问题是,这会删除相邻列中的重要数据,我计划接下来删除这些列中的重复数据。我想让这个过程循环遍历大约900列,并分别对每一列重复执行重复数据删除。有没有一种方法可以使用VBA代码删除当前选定内容中的重复值,而不是删除整个行?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-08-23 07:10:43

下面是一个可以设置为循环的脚本。它将列字母作为变量Finds the last Row。然后删除重复项。

您将需要更改工作表名称(如果可以,请避免使用activesheet,因为您最终可能会删除不想要的工作表上的重复项。

需要注意的一件事是,单元格值是在列中显示的,所以如果A5与B5排成一列,就会搞乱您的行。

代码语言:javascript
复制
sub test()
dim myCol as string

myCol = "B"

With Sheets("Sheet1")
    LastRow = .Range(myCol & .Rows.Count).End(xlUp).Row
    .Range(myCol & "1:" & myCol & LastRow).RemoveDuplicates Columns:=1, Header:=xlYes
End With

end sub
票数 1
EN

Stack Overflow用户

发布于 2016-08-23 14:29:44

您可以像下面这样遍历列:

代码语言:javascript
复制
Option Explicit

Sub test()
    Dim col As Range

    With Worksheets("Dupes").Range("B:D") '<--| change "Dupes" with your actual sheet name and ""B:D" with your actual columns range
        For Each col In .Columns
            col.RemoveDuplicates Columns:=Array(1), Header:=xlYes
        Next col
    End With
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39089881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档