我在互联网上看到了很多关于这个问题的答案(并且在stackoverflow上)当我尝试每个人似乎都建议的解决方案时,某些东西无效。
基本上我有一个值列表(比如第24行,第C列到第U行),我想在第25行创建一个(范围)公式,它会给我一些值的不同值。范围C24:U24。
我使用了下面的公式
=INDEX($C$24:$U24,MATCH(0,COUNTIF($B$25:B25,$C$24:$U$24),0))
它不起作用,只是返回列表中的第一项。
答案 0 :(得分:3)
您仍然需要在几个单元格中复制粘贴公式。在您的示例中,$B$25
将是第一个单元格(因为公式的这一部分:$B$25:B25
)。当您向下拖动此公式时,它将检查该值是否已在$B$25:B26
中,依此类推。
答案 1 :(得分:2)
我知道你没有要求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
对于那些关心的人:它将单元格值转储到变量数组中,然后用每个单词填充一个字典(空白单元格除外)。由于词典只保留了unqiue键,因此它可以清除欺骗行为。然后我遍历字典并为每个条目创建一个字符串。我在最后清理了额外的分隔符,所以列表很干净。