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

我有一列值经常显示为重复。 我需要创build一个基于第一列的唯一值的新列,如下所示:

Column A Column B aa ab bc c c 

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

我没有运气与数据/filter菜单选项,因为这似乎只能在命令上工作。 每当在A列中input新值时,我都需要B列自动更新

Totero的回答是正确的。 链接也非常有帮助。

基本上你需要的公式是:

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

然后按Ctrl + Shift + Enter (或使用数组公式无法工作)。

这里要记住两个重要的事情:完整的列表在单元格A2:A20 ,那么这个公式必须被粘贴到单元格B2 (不是B1因为这会给你循环引用)。 其次这是一个数组公式,所以你需要按Ctrl + Shift + Enter或它将无法正常工作。

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

基本上类似于:

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

在我的情况下,excel在使用公式的时候被冻结了

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

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

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

从Microsoft Office网站复制:

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

你想过滤。

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

 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. 

被过滤的列表用突出的边框突出显示,并且select在剪贴板的顶部显示为>>项目。

 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. 

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

来源:微软Office网站(链接被删除,导致死机)

从列中删除重复项

  1. 对列A – > Z中的值进行sorting
  2. selectB列
  3. 在列B仍然被选中的情况下,在公式input框中input

     =IF(TRIM(A1)=TRIM(A2),"",TRIM(A1)) 
  4. 虽然列B仍然被选中,select编辑 – >填充 – >向下(在较新的版本中,只需select单元格B1,并拉下外框在列中完全展开)

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

在一个sorting的列上 ,你也可以尝试这个想法:

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

B3可以粘贴下来。 在最后一次唯一匹配之后,它将导致0。 如果这是不必要的,请放一些IF语句来排除这个。

编辑:

比IF语句更容易,至less是文本值:

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

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

 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 

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

按照以下给出的步骤:

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

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

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

上面的公式说明,如果A2列数据(A是列,2是行号)与A3类似(A是列,3是行号),那么它将打印重复,否则将打印不重复。

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

你得到的重复数据只是把你的工作表上的filter,使只有重复的数据可见,并删除所有不必要的数据。

老实说,我跟着这些例子来开球,他们根本没有工作。 在挣扎毫无意义地尝试让Excel工作之后,我最终做的只是将列的全部内容复制到NotePad ++,在那里我能够在几分钟内find一个简单的解决scheme。 看看这个: 在记事本++中删除重复的行

编辑:这里是如何在TextFX中做一个简要的概述:

插件 – >插件pipe理器 – >显示插件pipe理器 – >可用选项卡 – > TextFX – >安装

在NotePad ++中安装TextFX后,select你想删除重复的所有文本,然后确保检查:TextFX – > TextFX工具 – >仅sorting输出UNIQUE行

然后单击“sorting行区分大小写”或“sorting行大小写不敏感”,并执行唯一sorting。

MODERN方法是考虑信息列来自诸如OData源的Web服务的情况。 如果您需要生成一个filterselect字段,而这些字段没有为列复制值,请考虑下面的代码:

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