忽略重复并在Excel中创建唯一值的新列表

时间:2012-11-09 12:16:41

标签: excel excel-formula excel-2010

我有一列值通常显示为重复值。我需要根据第一列创建一个具有唯一值的新列,如下所示:

Column A   Column B  
a          a
a          b
b          c
c
c

此B列实际上需要出现在同一工作簿中的不同工作表上,因此我假设它需要使用sheet2!A1样式格式。

我对数据/过滤器菜单选项没有任何好运,因为这似乎只适用于命令。每当在A列中输入新值时,我都需要B列自动更新。

14 个答案:

答案 0 :(得分:62)

托特罗的回答是正确的。该链接也非常有用。

基本上你需要的公式是:

B2=INDEX($A$2:$A$20, MATCH(0, COUNTIF($B$1:B1, $A$2:$A$20), 0))

然后按 ctrl + shift + 输入(或使用数组公式无效)。

这里要记住两件重要的事情:完整列表位于单元格A2:A20中,然后必须将此公式粘贴到单元格B2中(不是B1,因为它会给你循环参考)。 其次这是一个数组公式,所以你需要按 ctrl + shift + 输入,否则它将无法正常工作。

答案 1 :(得分:21)

有一个很好的指导如何执行此操作here

基本上类似于:

=INDEX(Sheet1!$A$1:$A$20, MATCH(0, COUNTIF($B$1:B1,Sheet!$A$1:$A$20), 0))

答案 2 :(得分:10)

在我的情况下,使用

的公式时,excel被冻结了
  

B2 = INDEX($ A $ 2:$ A $ 20,MATCH(0,COUNTIF($ B $ 1:B1,$ A $ 2:$ A $ 20),0))

因为有很多行(10000)。所以我用另一种方式做了,我将在下面展示。

我已将原始列表复制到第二列,然后使用Excel“删除重复项”功能,我可以找到唯一值列表。

从Microsoft Office网站复制:

Select all the rows, including the column headers, in the list 
     

你想要过滤。

     

单击范围的左上角单元格,然后拖动到右下角的单元格。

On the Data menu, point to Filter, and then click Advanced Filter.
In the Advanced Filter dialog box, click Filter the list, in place.
Select the Unique records only check box, and then click OK.
     

显示已过滤的列表,并隐藏重复的行。

On the Edit menu, click Office Clipboard.
     

显示剪贴板任务窗格。

Make sure the filtered list is still selected, and then click Copy Copy button.
     

已过滤的列表以边界轮廓突出显示,选择显示为> >剪贴板顶部的项目。

On the Data menu, point to Filter, and then click Show All.
     

重新显示原始列表。

Press the DELETE key.
     

删除原始列表。

In the Clipboard, click on the filtered list item.
     

过滤后的列表显示在与原始列表相同的位置。

来源: Microsoft Office Website(链接已删除,导致死机)

答案 3 :(得分:5)

排序列 上,您也可以尝试这个想法:

B2=A2
B3=IFERROR(INDEX(A:A,MATCH(B2,A:A,1)+1),"")

可以粘贴B3。在最后一次独特匹配之后,它将结果为0。如果这是不需要的,请放置一些IF语句以排除它。

修改

比IF语句更容易,至少对于文本值:

B3=IFERROR(T(INDEX(A:A,MATCH(B2,A:A,1)+1)),"")

答案 4 :(得分:5)

删除列中的重复项

  1. 对A A-> Z
  2. 列中的值进行排序
  3. 选择列B
  4. 当列B仍处于选中状态时,在公式输入框中输入

    =IF(TRIM(A1)=TRIM(A2),"",TRIM(A1))
    
  5. 当列B仍处于选中状态时,选择编辑 - >填充 - >向下(在较新版本中,只需选择单元格B1并向下拉外框以在列中向下展开)

  6. 注意 :如果B列在另一张纸上,您可以执行Sheet1!A1和Sheet1!A2。

答案 5 :(得分:2)

在包含列表的工作表的工作表模块中:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngDest As Range

    If Not Intersect(Target, Me.Columns(1)) Is Nothing Then

        Set rngDest = ThisWorkbook.Sheets("Sheet2").Range("A1")

        Me.Range(Me.Range("A2"), Me.Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter _
            Action:=xlFilterCopy, CopyToRange:=rngDest, Unique:=True

    End If

End Sub

答案 6 :(得分:2)

我在A2范围内有一个颜色名称列表:A8,在B栏中我想提取一个不同的颜色名称列表。

按照以下步骤操作:

  • 选择Cell B2;编写公式以从列表中检索唯一值。
  • =IF(COUNTIF(A$2:A2,A2)=1,A2,””)
  • 按键盘上的 Enter
  • 该函数将返回第一种颜色的名称。
  • 要返回其余单元格的值,请向下复制相同的公式。要复制范围B3:B8中的公式,请按键盘上的键 CTRL + C 复制单元格B2中的公式,然后按键 CTRL + V键入B3:B8范围内
  • 在这里,您可以看到我们拥有唯一颜色名称列表的输出。

答案 7 :(得分:0)

因此,对于此任务首先按照从A到Z或Z到A的顺序对数据进行排序,然后您可以使用如下所述的一个简单公式:

=IF(A2=A3, "Duplicate", "Not Duplicate")

上述公式表明,如果A2列数据(A为列,2为行号)与A3类似(A为列,3为行号)则打印复制,否则将打印不复制。

让我们考虑一个例子,A列包含电子邮件地址,其中一些是重复的,所以在第2列中,我使用了上述公式,在结果中显示了2个重复单元格,一个是第2行和第6行。

您获得重复数据只需将过滤器放在工作表上,只显示重复数据并删除所有不必要的数据。

答案 8 :(得分:0)

老实说,我将这些例子用于发球台,他们根本没用。在无意义地试图让Excel工作之后我最终做的就是将我的专栏的全部内容复制到NotePad ++,在那里我能够在几分钟内找到一个简单的解决方案。看看这个:Removing duplicate rows in Notepad++

编辑:以下是TextFX中如何操作的简要概述:

插件 - >插件管理器 - >显示插件管理器 - >可用标签 - > TextFX - >安装

在NotePad ++中安装TextFX后,选择要从中删除重复项的所有文本,然后确保检查:TextFX - > TextFX工具 - >排序输出只有UNIQUE行

然后单击“排序区分大小写”或“排序行不区分大小写”,它将执行唯一排序。

答案 9 :(得分:0)

使用错误控制

查找上面提到的here公式
=IFERROR(INDEX($B$2:$B$9, MATCH(0,COUNTIF($D$1:D1, $B$2:$B$9), 0)),"") 

其中:(B2:B9是要提取唯一值的列数据,D1是您的公式所在的上述单元格)

答案 10 :(得分:0)

您所要做的就是: 转到数据选项卡 在Sort& amp;过滤 在操作中选择:如果需要新列表,请复制到另一个位置 - 复制到任何位置 在列表范围中,选择要获取记录的列表。 最重要的是检查: 仅限唯一记录。

答案 11 :(得分:0)

=SORT(UNIQUE(A:A))

如果要在列中列出唯一值,则上述公式最有效。

答案 12 :(得分:0)

自Excel 2016起,另一种方法是使用Power Query。

方法:

  • 选择数据(包括字段名称)
  • 使用菜单Data> From a table or a range
  • (Excel会将您的工作表更改为Excel表,这非常方便),
  • 在Power Query编辑器中,右键单击ColumnA(列标题)和Remove duplicates
  • 在菜单中,选择Close and load,选择结果的位置,然后完成like this
  • 无论何时要更新结果表,请右键单击它并选择Refresh

好处:

  • 仅在手动更新时才使用CPU,这非常方便 对于长列表,
  • 如果您感到好奇,这可以提供许多其他功能 选项。

缺点:

  • 它不会即时更新(您必须右键单击并刷新 结果表),
  • 使用旧版Excel的人将无法刷新结果表。

答案 13 :(得分:-6)

MODERN方法是考虑信息列来自Web服务(如OData源)的情况。如果您需要从具有列的复制值的海量数据生成过滤器选择字段,请考虑以下代码:

var CatalogURL = getweb(currenturl)
                 +"/_api/web/lists/getbytitle('Site%20Inventory%20and%20Assets')/items?$select=Expense_x0020_Type&$orderby=Expense_x0020_Type";

/* the column that is replicated, is ordered by <column_name> */

    OData.read(CatalogURL,
        function(data,request){

            var myhtml ="";
            var myValue ="";

            for(var i = 0; i < data.results.length; i++)
            {
                myValue = data.results[i].Expense_x0020_Type;

                if(i == 0)
                {
                        myhtml += "<option value='"+myValue+"'>"+myValue+"</option>";
                }
                else
                if(myValue != data.results[i-1].Expense_x0020_Type)
                {
                        myhtml += "<option value='"+myValue+"'>"+myValue+"</option>";

                }
                else
                {

                }


            }

            $("#mySelect1").append(myhtml);

        });