【发布时间】:2017-10-25 08:26:13
【问题描述】:
我有一个标准的用户定义函数,可以连接所有唯一值。我要做的是在满足条件的范围内执行此功能。
Function ConcatUniq(xRg As Range, xChar As String) As String
'updateby Extendoffice 20151228
Dim xCell As Range
Dim xDic As Object
Set xDic = CreateObject("Scripting.Dictionary")
For Each xCell In xRg
xDic(xCell.Value) = Empty
Next
ConcatUniq = Join$(xDic.Keys, xChar)
Set xDic = Nothing
End Function
举个例子: 如果我们有以下数据:
A1:A5 = {1,2,2,4,1}
B1:B5 = {"group1", "group1","group1", "group2", "group2"}
C1 = "group1"
现在我想使用 ConcatUniq 函数为 group1 中的所有数字查找唯一值。通常,如果我想执行另一个功能,例如中位数,我会执行以下操作:
=MEDIAN(IF(B1:B5=C1,A1:A5))
使用给出 2 的 cntrl shift enter 激活它(从中创建一个数组函数)。 由于某些原因,这不能与用户定义的函数结合使用。
=ConcatUniq(IF(B1:B5=C1,A1:A5)," ")
想要的结果:
1 2
有人知道我该如何解决这个问题吗?
【问题讨论】:
-
这个
IF(B1:B5=C1,A1:A5),"的输出不是这些:xRg As Range之一,所以使用Variant 并测试Range 和Array/Variant 然后从那里开始