在匹配中返回多个以逗号分隔的值

我有以下的Excel公式,这是工作正常返回列的第一个值,但我希望它返回逗号分隔列表中的唯一值的列表。

=INDEX('001'!G$12:G$99, MATCH("*", '001'!G$12:G$99, 0)) 

可能很明显,我正在search的值列表在表格“001”的表格中。

我已经find解决scheme,使用数组公式分布在多行,但由于创build一个逗号分隔列表的约束,我很难创build一个单一的公式中的解决scheme。

尝试以下用户定义function:

 Public Function ListUniques(rng As Range) As String ListUniques = "" Dim c As Collection, r As Range, _ v As Variant, ky As String Set c = New Collection On Error Resume Next For Each r In rng v = r.Value If v <> "" Then ky = CStr(v) c.Add v, ky If Err.Number = 0 Then ListUniques = ListUniques & "," & v Else Err.Number = 0 End If End If Next r ListUniques = Mid(ListUniques, 2) On Error GoTo 0 End Function 

例如:

UDF

用户定义的函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开一个新的模块
  3. 粘贴东西,closuresVBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除UDF:

  1. 如上所示调出VBE窗口
  2. 清除代码
  3. closuresVBE窗口

从Excel中使用UDF:

= ListUniques(G12:G99)

要了解有关macros的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

有关UDF的细节

macros必须启用这个工作!

此外,您必须确保返回不超过255个字符,即Excel限制:

 Public Function ListUniques(rng As Range) As String ListUniques = "" Dim c As Collection, r As Range, _ v As Variant, ky As String Set c = New Collection On Error Resume Next For Each r In rng v = r.Value If v <> "" Then ky = CStr(v) c.Add v, ky If Err.Number = 0 Then ListUniques = ListUniques & "," & v Else Err.Number = 0 End If End If Next r ListUniques = Mid(ListUniques, 2, 255) On Error GoTo 0 End Function