删除两列中成对的值(行)中的一对

我有两列,我需要删除重复的行。 对于这个例子:

A b sport 1 pippo sport 1 pippo sport 1 pluto sport 2 paperino sport 2 paperino sport 3 gastone 

我需要的输出是:

 A b sport 1 pippo sport 1 pluto sport 2 paperino sport 3 gastone 

我是新来的Excel,所以不知道使用什么样的公式或VBA。

我怎么能做到这一点?

您可以使用“数据”选项卡手动Remove Duplicates (您应该这样做以了解其工作原理)

或者,如果你真的想自动化,试试这个

 Sub Demo() Dim ws As Worksheet Dim rng As Range ' Get a reference to the sheet your data is on Set ws = ActiveSheet '<-- change to suit With ws ' Get a reference to your data Set rng = Range(.Cells(1, 2), .Cells(.Rows.Count, 1).End(xlUp)) ' Apply Remove Duplicates rng.RemoveDuplicates Columns:=2, Header:=xlNo End With End Sub 

有几种方法可以达到你想要的效果,其中最简单的就是@chris neilsen所提到的:

删除重复

只需select您的两列然后数据>数据工具 – 删除重复接受默认(可能),然后单击确定。 正如在评论中指出的,并不是所有版本的Excel都具有这样的function。

注意删除 – 一旦Undo堆栈被覆盖,它们就消失了。

请注意,删除重复不完全可靠(请参阅下面的高级filter中的链接)。

高级filter

我倾向于这样做,因为删除重复可能有一个缺陷 (虽然极为罕见的出现!):

这是强制性的(或者至less是非常可取的),以确保您的列标记为此。 再次select你的两列,然后select数据>sorting和筛选 – 高级,select复制到另一个位置,select复制到范围(一个单元就足够了),显然只检查唯一logging。

这里的“ 复制到”是一个放弃的事实,即您的整个原始列表(重复和全部)被保留,有时可能需要,而没有创build一个副本首先工作的麻烦。

COUNTIF

公式解决scheme可能是更适当的删除重复的意思是一对双方

就像是:

 =COUNTIF(B:B,B1) 

在B1中(假设你的标签在Row1中)并拷贝下来以识别对或其他倍数。 完成计数后,过滤删除选定的select。

COUNTIF通常在所有Excel版本中可用(我不记得是否在最早的版本!)

COUNTIFS

函数只适用于最新版本的Excel,但允许更复杂的“重复”定义 – 不适用于您的示例。

数据透视表

PT的聚合行标签值当然,所以给出删除重复的外观。 PT是如此有用,他们可能会因为其他原因,所以没有额外的麻烦,删除重复。

以表格forms显示表格布局可能是最方便的(这里在行标签中的A上面b )。 这应该显示每个A / b对的一个实例 – 除非A值不是第一个例子。 换句话说,ColumnA值的显示不会重复ColumnA值 – 只是表示“与上面相同”的空白,直到A发生更改。 我认为最新版本的Excel有在每一行显示A值的function,但是在早期版本中很容易做出“补偿”。

但问题是,由于PT的内容不能按照下面提出的方式进行修改,所以需要在PT中显示的数据副本上(而不仅仅是PT的另一个版本)

在每个“部分”,“主页”>“编辑”>“查找并select”,“转到特殊…”,“空白” 开始时 ,select仅包含值的列。 点击其中一个选中的单元格,input= ,向上箭头和CTRL + Enter

VBA

这是几乎任何“Excel”的解决scheme,可以删除重复,虽然可能不会“成本效益”的一个完整的数据样本的大小在你的问题 – 除非经常需要的过程。

我可能错过了其他一些select – 但毫无疑问,在我刚刚开始使用这种熨平板之前,他们已经被其他人提到了。