如何在 Excel 中的列中获取不同/唯一值?

Kje*_*sen 324 microsoft-excel

如果我有一个带有值的列,并且我想找出其中有哪些不同的值(不是多少 - 而是实际的不同值),我该怎么做?

在 SQL Server 中,我会做类似的事情

SELECT Distinct(MyColumn) FROM MyTable
Run Code Online (Sandbox Code Playgroud)

A D*_*arf 339

比你想象的更简单:

  • 单击数据功能区菜单
  • 排序和过滤部分选择高级按钮
  • 填写对话框,将结果复制到另一个位置并确保勾选仅唯一记录

在此处输入图片说明

  • 对于我们这些仍然过着无色带生活的人来说,它是数据->过滤器->高级。 (35认同)
  • 如果将数据复制到另一个工作表,您必须_从要复制到的工作表_启动高级对话框,否则会出现“您只能将过滤后的数据复制到活动工作表”错误。 (20认同)
  • +1 如果要保持原始数据完整,此方法优于删除重复项。 (11认同)
  • 当源范围值更改时,这不会更新。有没有办法让它动态? (10认同)

Nat*_*itt 136

Excel 2007 和 2010:
使用数据标题Remove Duplicates下的菜单选项。

Excel 2003:
简单的方法:

  1. 确保您的数据有标题
  2. 数据 --> 过滤器 --> 高级过滤器
  3. 仅检查唯一记录
  4. 选择复制到其他位置
  5. 单击确定

艰辛的道路:

使用以下代码编写宏:

'Remove duplicates from sorted list
Sub getDistinct()
    Do While ActiveCell.Value <> ""
        If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
            ActiveCell.Select
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop
End Sub
Run Code Online (Sandbox Code Playgroud)

这为您提供了独特的列表。您可能希望先将列表复制到另一个工作表。

  • 谢谢!这证明 Stack Exchange 比任何其他技术信息来源都要好得多。所有其他谷歌结果都是无用的,并且没有排名。我也想知道专家交流如何生存 (25认同)

小智 26

或者(一种简单粗暴的方式):

在 B1,

=IF(COUNTIF(A$1:A1,A1)=1,A1,"") 
Run Code Online (Sandbox Code Playgroud)

并抄下来。它只是复制每个值的第一次出现(在它出现的行中)。

  • 与所有 Excel 公式一样,根据系统的区域设置,您可能需要使用分号 (`;`) 而不是逗号 (``,``)。 (2认同)

And*_*ohr 25

我使用两种主要方法来获取不同的值 - 第一种是Nathan DeWitt 建议的宝贵Remove Duplicates工具。

缺点Remove Duplicates是您会丢失数据。尽管Ctrl+z很强大,但出于各种原因,您可能不希望这样做 - 例如,您当前可能选择了过滤器,这使得删除重复项以获得不同的值列表变得非常混乱。

上面没有提到的另一种方法是使用数据透视表。

假设这是您的表,并且您想要获得不同的平台列表。 假桌

插入Pivot Table带有表格的 a 作为您的数据源。

现在选择Platform(s)列作为您的Row Labels.

瞧!不同值的列表。

数据透视表作为不同的值列表

如果您想整理一下,您可以关闭Field Headers并设置Grand TotalsOff for Rows and Columns


小智 6

或者您可以在宏中包含过滤器选项

    Columns("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Run Code Online (Sandbox Code Playgroud)


Jus*_* Me 5

对我来说,最简单的排序方法是使用“过滤器”选项。

第一步是使用条件格式 -> 突出显示单元格规则 -> 重复值查找重复值。

然后单击具有重复项的列上的箭头(在本例中为“平台”)-> 按颜色过滤(单元格颜色或字体颜色)。