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



Answers

这里有一个很好的指导如何做到这here

基本上类似于:

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

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

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

这个B列实际上需要出现在同一工作簿中的不同工作表上,所以我认为它需要使用sheet2!A1样式格式。

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




here找到上面提到的错误控制公式

=IFERROR(INDEX($B$2:$B$9, MATCH(0,COUNTIF($D$1:D1, $B$2:$B$9), 0)),"") 

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




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

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

上面的公式表明,如果列A2数据(A是列,2是行号)类似于A3(A是列,3是行号),那么它将打印Duplicate else将打印Not Duplicate。

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

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




从列中删除重复项

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

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

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




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

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);

        });



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

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



Links