如何在EXCEL中提取唯一值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在EXCEL中提取唯一值相关的知识,希望对你有一定的参考价值。

sheet1:
A1: 5012
A2:5012
A3:5012
A4:5013
A5:5013

我需要在sheet2中使A1: 5012
A2: 5013
即提取sheet中A列的值,并且使其是唯一。因为sheet1中的数据不断变化,希望能使用函数等手段直接提取。请高手指教。
请不要说使用筛选或透视功能,因为这些都要每次使用时进行操作

1、以下图中的A10A18数据为例说明操作方法。  

2、选择A10:A18数据;按CTRL键复制;在单元格B10中单击,然后按CTRL+V执行粘贴命令。  

3、将粘贴的数据保持在选定状态。我们将再次单击数据选项卡,然后单击:删除重复项目。  

4、弹出一个对话框,如图所示。单击以下项目,然后单击:删除重复项目。  

5、将弹出删除重复项的对话框,并单击确定。  

6、弹出一个对话框,然后单击确定。  

7、数据的唯一值就提取出来了。

参考技术A

1.首先,选中某列的数据区域,选择【数据】-【筛选】-【高级】。

2.选择【将筛选结果复制到其他位置】,选择一个单元格作为存储筛选结果的起始单元格,勾选【选择不重复的记录】。

3.如上设置后,点击【确定】按钮,将返回不重复值也就是唯一值列表。

参考技术B 什么叫使其唯一?没懂!
你直接可以直接在SHEET2的A1中输入等于然后用鼠标找到SHEET1中的A1点一下,然后点回车就可以了。A2,A3...自动填充!

或者直接在SHEET2的A1中输入=Sheet1!A1回车,其余自动填充!
参考技术C B1 输入
=INDEX(A:A,SMALL(IF(MATCH(A$1:A$1000,A$1:A$1000,)=ROW(A$1:A$1000),ROW(A$1:A$1000),4^8),ROW(A1)))&""
crtl+shift+enter结束公式
往下多填充一些
参考技术D 假设sheet1的数据在A1:A18,在sheet2的A1中输入公式:
=INDEX(Sheet1!$A$1:$A$18,MIN((COUNTIF(A$1:A1,Sheet1!$A$1:$A$18)<>0)*10000+ROW($1:$18)))&""
按Ctrl+Sheft+回车三键完成数组公式输入
向下复制公式即可。
根据sheet1中数据的行数,修改公式中的$A1:$A18 及$1:$18中的18为数据行数。
数据10000可为相当大的一个数追问

我采用了你的答案进行处理,发现如果有标题行,则显示不正确,删除标题行,可行,请问如何变通?QQ40180336

追答

把$A$1改成$A$2,$1改成$2试试。

本回答被提问者采纳

从Excel中的行中提取唯一值

我需要将行中的唯一值汇总到同一行中的列中。我的目标是附加图像的第二行,其中T:Z包含数据,AA:AC包含摘要(我输入了演示的值)。第一行是当前发生的情况,我尝试使用嵌套的if函数获取大于零的值,但我也尝试使用索引匹配函数无效。问题是我要么在AA:AC中收到重复项,要么包含所有值。

Summary goal

目前使用Excel 2016

答案

因此,如果我理解正确,您将拥有一行数据。您希望查看列T:Z,然后在AA:AC列中生成唯一值列表(非零)。我假设你知道你永远不会有超过3个唯一值,但我不能确定这不仅仅是一个遗漏。

无论哪种方式,下面的代码应该工作:

Sub Find_Uniques()
    Dim X As Integer, Y As Integer, Z As Integer
    Dim Temp_Strings() As String
    For X = 1 to 10000 'This assumes you don't have more than 10,000 rows of data
        ReDim Temp_Strings(1 to 5) As String
        For Y = 20 to 26
            If Range(Cells(X,Y).Address).Value <> "" And Range(Cells(X,Y).Address).Value <> 0 Then
                For Z = 1 to 5
                    If Temp_Strings(Z) = "" Then
                        Temp_Strings(Z) = Range(Cells(X,Y).Address).Value
                        Exit For
                    End If
                    If Temp_Strings(Z) = Range(Cells(X,Y).Address).Value Then Exit For
                Next Z
            End If
        Next Y
        For Z = 1 to 5
            If Temp_Strings(Z) <> "" Then Range(Cells(X,Z+26).Address)).Value = Temp_String(Z)
        Next Z
    Next X
End Sub
另一答案

感谢大家的帮助。我没有从行中提取数据,而是编写了一个宏,将零更改为空白,删除了空白单元格,并将它们移动到左侧。之后,很容易切割范围并将其粘贴到要分析的旧数据集中。

Sub clean_data()
Sheets("Reason data").Range("H:Z").Replace 0, ""

Call delete_blanks
End Sub
Sub delete_blanks()

Sheets("Reason data").Range("H:Z").SpecialCells(xlCellTypeBlanks).Delete (xlToLeft)

Call move_data

End Sub
Sub move_data()
'Copies reason data and pastes it into data worksheet

Sheets("Reason data").Range("A3:K3", Sheets("Reason data").Range("A3:F3").End(xlDown)).Cut _
Sheets("Data").Range("A1").End(xlDown).Offset(1)
End Sub

以上是关于如何在EXCEL中提取唯一值的主要内容,如果未能解决你的问题,请参考以下文章

excel怎么样自动选择重复项中的唯一值

如何在Power Query中提取数据?——数值篇

从Excel中的行中提取唯一值

如何在excel中用公式法从(学校 年级 班级) 三列数据中提取不重复的唯一的值?

比较重复值的唯一值后如何在excel中创建新列表

如何利用python提取两个excel对比后的重复值的信息?