如何将不同列中的唯一数值显示到单个单元格中(以逗号分隔)

如何将不同列中的唯一数值显示到单个单元格中(以逗号分隔)

我遇到了一个独特的问题,我一直在尝试解决,但无济于事。我搜索了整个互联网,但只找到了部分解决方案,而不是完整的解决方案。

我正在寻找一个函数(或几个函数)来解决这个问题,而无需添加引用。

我有 2 列(A 列和 B 列)。

这些列中的每个单元格可以是空白的,也可以包含一个或多个数值(数值之间用逗号分隔)。用户将手动输入这些数值。

例子:

示例1

我需要一个函数,将所有唯一的数值显示到一个单元格中,并用逗号分隔(如果可能的话按时间顺序排列)。

例子:

示例2

现在,一旦建立了这个,我就需要一个函数来计算从这个单元格到另一个单元格的唯一数值的数量。

例子:

http://imgur.com/Y46D6pR

任何帮助都将不胜感激。

答案1

以下是列表:

Public Function WhatsInThere(rng As Range) As String
   Dim r As Range, v As String, c As Collection, ary, a
   Set c = New Collection
   WhatsInThere = ""

   On Error Resume Next
      For Each r In rng
         v = r.Text
         If v <> "" Then
            If InStr(1, v, ",") = 0 Then
                c.Add v, CStr(v)
               If Err.Number = 0 Then WhatsInThere = WhatsInThere & "," & v
               Err.Number = 0
            Else
               ary = Split(v, ",")
               For Each a In ary
                     c.Add a, CStr(a)
                  If Err.Number = 0 Then WhatsInThere = WhatsInThere & "," & a
                  Err.Number = 0
               Next a
            End If
         End If
      Next r
   On Error GoTo 0
   WhatsInThere = Mid(WhatsInThere, 2)
End Function

在此处输入图片描述

要计算项目数,只需数出逗号并加一。

相关内容