我在互联网上看到了很多关于这个问题的答案(以及在stackoverflow上),当我尝试每个人都似乎建议的解决方案时,有些东西不起作用。excel独特的价值
基本上我有一个值的列表(比如在第24行,列C到U),我想在第25行创建一个(范围)公式,这将给我的值的不同值范围C24:U24。
我用下面
=INDEX($C$24:$U24,MATCH(0,COUNTIF($B$25:B25,$C$24:$U$24),0))
公式它不工作,它只是返回列表的第一个项目。
我在互联网上看到了很多关于这个问题的答案(以及在stackoverflow上),当我尝试每个人都似乎建议的解决方案时,有些东西不起作用。excel独特的价值
基本上我有一个值的列表(比如在第24行,列C到U),我想在第25行创建一个(范围)公式,这将给我的值的不同值范围C24:U24。
我用下面
=INDEX($C$24:$U24,MATCH(0,COUNTIF($B$25:B25,$C$24:$U$24),0))
公式它不工作,它只是返回列表的第一个项目。
您仍然需要在几个单元格中复制粘贴公式。在你的例子中,$B$25
将是第一个单元格(因为这部分公式:$B$25:B25
)。当你拖动这个公式时,它会检查这个值是否已经在$B$25:B26
等等。
我不是在拖动公式,我正在使用ctrl + shift + enter使用范围公式(也是我的范围实际上是一行,但这是无关紧要的) – Charbel
我也尝试将它作为单元格公式,并在我的所有行范围内水平拖动它,但是它会返回#n/a – Charbel
是否可能是因为excel函数改变了一些结果,我在http://www.excelforum中尝试了类似的功能。 com/excel-worksheet-functions/363302-howto-select-distinct-values-from-list.html和http://www.get-digital-help.com/2009/03/30/how-to-提取一个独特的列表和重复的excel从一列/ – Charbel
我知道你并没有要求VBA功能,但万一有些读者想要知道如何通过VBA来做到这一点,这里是函数。它需要一系列单元格,并仅创建一个唯一元素的字符串。你也可以添加一个分隔符(比如,如果你想让它们逗号分隔)。
Function UniqueList(ByVal cell_range As range, _
Optional ByVal seperator As String = "") As String
Dim vArray As Variant
Dim result As String
Dim i As Long, j As Long
Dim v As Variant
Dim dictionary As Object
Set dictionary = CreateObject("scripting.dictionary")
vArray = cell_range.Value
For i = 1 To UBound(vArray, 1)
For j = 1 To UBound(vArray, 2)
If Len(vArray(i, j)) <> 0 Then
dictionary(vArray(i, j)) = 1
End If
Next
Next
For Each v In dictionary
result = result & (seperator & v)
Next
If Len(result) <> 0 Then
result = Right$(result, Len(result) - Len(seperator))
End If
UniqueList = result
End Function
对于那些谁关心:它转储单元值成变量数组,然后填充用每一个(除了空白单元格)的字典。由于字典只有独特的钥匙,因此它会清除欺骗。然后我遍历字典并为每个条目创建一个字符串。我最后清理了额外的分隔符,所以清单很干净。
也许是超级用户的问题? –
每个单元格中的值是单个字符,字符串,单词还是数字?另外,是否希望列表中的每个项目都合并为一个字符串,并且是否要为每个不同的元素使用分隔符(如逗号分隔)? – aevanko
这个公式适用于我,当它作为数组公式输入时,然后拖到第25行。如果行24中没有其他唯一值,它将返回“#N/A”。 – Excellll