Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4132|回复: 11

[已解决]自定函数返回相同的个数及实际数。

[复制链接]
发表于 2016-3-4 20:34 | 显示全部楼层 |阅读模式
本帖最后由 excelpxfans001 于 2016-3-5 17:19 编辑

自定函数返回相同的个数及实际数。
最佳答案
2016-3-5 14:25
'限制:
'1)参数是一行区域
'2)各参数包含的元素个数相同
Function SameNumber(ParamArray A() As Variant)
    Dim B, C, D, i, j

    C = A(0): D = C
    ReDim C(1 To 1, 1 To UBound(C, 2))
    For i = 0 To UBound(A)
        B = A(i)
        For j = LBound(C, 2) To UBound(C, 2)
            C(1, j) = IIf(i, C(1, j) = B(1, j), B(1, j))
        Next j
    Next i

    For j = LBound(C, 2) To UBound(C, 2)
        If C(1, j) Then SameNumber = SameNumber + 1
    Next j
    SameNumber = SameNumber & List(C, D)
End Function

'返回实际数字的列表
Function List(C, D) As String
    Dim j
    For j = LBound(C, 2) To UBound(C, 2)
        If C(1, j) Then List = List & "," & D(1, j)
    Next j
    List = "(" & Mid(List, 2) & ")"
End Function

求相同5.rar (11.03 KB, 下载次数: 14)

求相同.zip

9 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-3-5 12:14 | 显示全部楼层
回复

使用道具 举报

发表于 2016-3-5 12:48 | 显示全部楼层
QQ截图20160305123945.jpg

求相同2.rar (11.01 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2016-3-5 13:11 | 显示全部楼层
爱疯 发表于 2016-3-5 12:48
Function SameNumber(ParamArray A() As Variant) As Integer
    Dim B(9), C(9), x, i, j ', st ...

版主你好,从左至右要同位置相同的才算。

求相同3.rar

10 KB, 下载次数: 7

回复

使用道具 举报

发表于 2016-3-5 14:06 | 显示全部楼层
excelpxfans001 发表于 2016-3-5 13:11
版主你好,从左至右要同位置相同的才算。


'限制:
'1)参数是一行区域
'2)各参数包含的元素个数相同
Function SameNumber(ParamArray A() As Variant) As Integer
    Dim B, C, i, j

    C = A(0)
    ReDim C(1 To 1, 1 To UBound(C, 2))
    For i = 0 To UBound(A)
        B = A(i).Value
        For j = LBound(C, 2) To UBound(C, 2)
            If i = 0 Then
                C(1, j) = B(1, j)
            Else
                C(1, j) = (C(1, j) = B(1, j))
            End If
        Next j
    Next i

    For j = LBound(C, 2) To UBound(C, 2)
        If C(1, j) Then SameNumber = SameNumber + 1
    Next j
End Function

求相同4.rar (10.62 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2016-3-5 14:11 | 显示全部楼层
爱疯 发表于 2016-3-5 14:06
'限制:
'1)参数是一行区域
'2)各参数包含的元素个数相同

谢谢版主,个数已求出。具体相同数值可以跟在()里列出来么。
回复

使用道具 举报

发表于 2016-3-5 14:15 | 显示全部楼层
比如,=SameNumber(M15:V15,O19:X19)

单元格里返回的结果是什么样子?你手动给出看下
回复

使用道具 举报

 楼主| 发表于 2016-3-5 14:21 | 显示全部楼层
爱疯 发表于 2016-3-5 14:15
比如,=SameNumber(M15:V15,O19:X19)

单元格里返回的结果是什么样子?你手动给出看下

比如示例是相同个数是2个,具体数值是7,6.   则返回结果为: 2(7,6)  
回复

使用道具 举报

发表于 2016-3-5 14:25 | 显示全部楼层    本楼为最佳答案   
'限制:
'1)参数是一行区域
'2)各参数包含的元素个数相同
Function SameNumber(ParamArray A() As Variant)
    Dim B, C, D, i, j

    C = A(0): D = C
    ReDim C(1 To 1, 1 To UBound(C, 2))
    For i = 0 To UBound(A)
        B = A(i)
        For j = LBound(C, 2) To UBound(C, 2)
            C(1, j) = IIf(i, C(1, j) = B(1, j), B(1, j))
        Next j
    Next i

    For j = LBound(C, 2) To UBound(C, 2)
        If C(1, j) Then SameNumber = SameNumber + 1
    Next j
    SameNumber = SameNumber & List(C, D)
End Function

'返回实际数字的列表
Function List(C, D) As String
    Dim j
    For j = LBound(C, 2) To UBound(C, 2)
        If C(1, j) Then List = List & "," & D(1, j)
    Next j
    List = "(" & Mid(List, 2) & ")"
End Function

求相同5.rar (11.03 KB, 下载次数: 14)
回复

使用道具 举报

 楼主| 发表于 2016-3-5 14:46 | 显示全部楼层
爱疯 发表于 2016-3-5 14:25
'限制:
'1)参数是一行区域
'2)各参数包含的元素个数相同

谢谢老师,结果对的。  只是返回的结果单元格右上角好像有个什么相邻单元格。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 14:09 , Processed in 0.221830 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表