对于一个项目,我正在创建一个Excel宏,以便根据另一列值计算唯一列值。下面是我尝试创建的宏的基本示例:
数据
| 列_1|第二栏|
| - ------| - ------|
| 项目a| x|
| 项目a| Y型|
| b.人口基金|z|
| b.人口基金|z|
宏
Sub Main()
Dim Param As String
Param = "a"
MsgBox UniqueValues(Param)
End Sub
Function UniqueValues(Param As String) As String
Dim EvaluateString As String
EvaluateString = "=SUM(--(LEN(UNIQUE(FILTER(B:B,A:A=" & """" & Param & """" & ","""")))>0))"
UniqueValues = Evaluate(EvaluateString)
End Function
期望
期望对于Param = "a"
,函数返回2
,对于Param = "b"
,函数返回1
。
问题
尽管函数在Excel for Microsoft 365 Apps for Enterprise中运行良好,但该项目要求我使用Excel for Microsoft Office Standard 2013。此版本不支持在EvaluateString
中使用UNIQUE
和FILTER
函数。
我想了解是否有一种简单的方法可以根据Excel for Microsoft Office Standard 2013中一列中的值计算另一列中的唯一值。非常感谢您的帮助。
2条答案
按热度按时间9avjhtql1#
您可以使用数组公式
第一个月
输入公式后,您需要按Ctl + Shift + Enter,而不是Enter
在VBA中,可按如下所示使用上述公式
行动中
qxgroojn2#
当数据位于“Sheet1”中的A列和B列(从第1行开始)时,可以使用此宏(结果显示在D列和E列):