在匹配中返回多个以逗号分隔的值
我有以下的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)非常易于安装和使用:
- ALT-F11调出VBE窗口
- ALT-I ALT-M打开一个新的模块
- 粘贴东西,closuresVBE窗口
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除UDF:
- 如上所示调出VBE窗口
- 清除代码
- 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