如dd=345 
cc=5678 
求f=? f=(dd当中有几个和cc重复的) 
如上例f=1,因为就有1个5重复 
又如dd=555 
cc=5678 
那么f应该等于3,3个5重复了 
能否写成类似于这样的 ,下面代码是重复数字的和
Function fr(ByVal v As Long) As Long 
Dim l As Long 
While v > 0 
l = v Mod 10 
v = v \ 10 
Select Case l 
Case 1, 4, 7,0,8 
fr = fr + l 
End Select 
Wend 
End Function 
如现在是h=578,等于上面问题的dd 
然后,我在其他地方调用的时候可以直接用f=fr(h),这个f就是重复次数,这个比较会用很多次的,总不能用一次写一次啊,那样太麻烦,所以还是单独写一个像上面那个重复数字和的那样通用的比较好,然后在其他地方直接调用就可以了
Private Sub Command1_Click() 
a = 345 
b = 55678 
For i = 1 To 3 
For j = 1 To 4 
If Mid(a, i, 1) = Mid(b, j, 1) Then x = x + 1 
Next j 
Next i 
Print x 
End Sub 
这个不是我要的,我要的是通用的,将来可以f=fr(s)或f=fr(d),这样每次变换括号里的变量就可以了,这个该怎么写

解决方案 »

  1.   

    不太明白你的意思,不过不知道这样是否符合你的内容Private Sub Form_Load()
    Dim dd As Long
    Call aa(345, 55667, dd)
    MsgBox dd
    End SubPrivate Function aa(ByVal ax As Long, ByVal ab As Long, x As Long)
    For i = 1 To Len(ax)
    For j = 1 To Len(ab)
    If Mid(ax, i, 1) = Mid(ab, j, 1) Then x = x + 1
    Next j
    Next i
    End Function
      

  2.   


    Private Function Occurence_Count(ByVal intSource As Long, ByVal intPattern As Long) As Long
    Dim strSource As String, strPattern As String
    Dim n As Integer, i As Integer, j As IntegerstrSource = CStr(intSource)
    strPattern = CStr(intPattern)For i = 1 To Len(strPattern)
        For j = 1 To Len(strSource)
            If Mid(strPattern, i, 1) = Mid(strSource, j, 1) Then n = n + 1
        Next j
    Next iOccurence_Count = nEnd FunctionPrivate Sub Command1_Click()
    Dim a As Long, b As Long
    a = 345
    b = 556748Debug.Print Occurence_Count(b, a)
    End Sub
      

  3.   

    楼主说的不是很清楚
    假设dd=12333 cc=33456,算重复了几个数字?
    3个还是6个还是5个?
    Private Sub Command1_Click()
        Print Fun1(12333, 3345)
        Print Fun2(12333, 3345)
        Print Fun3(12333, 3345)
    End SubPrivate Function Fun1(ByVal dd As Long, cc As Long) As Long
        Dim n As Long, m As Long, i As Long
        Dim numdd(0 To 9) As Long, numcc(0 To 9) As Long
        
        Do While dd > 0
            m = dd Mod 10
            numdd(m) = numdd(m) + 1
            dd = dd \ 10
        Loop
        
        Do While cc > 0
            m = cc Mod 10
            numcc(m) = numcc(m) + 1
            cc = cc \ 10
        Loop
        
        For i = 0 To 9
            If numcc(i) > 0 Then
                n = n + numdd(i)
            End If
        Next
        
        Fun1 = n
    End FunctionPrivate Function Fun2(ByVal dd As Long, cc As Long) As Long
        Dim n As Long, m As Long, i As Long
        Dim numdd(0 To 9) As Long, numcc(0 To 9) As Long
        
        Do While dd > 0
            m = dd Mod 10
            numdd(m) = numdd(m) + 1
            dd = dd \ 10
        Loop
        
        Do While cc > 0
            m = cc Mod 10
            n = n + numdd(m)
            cc = cc \ 10
        Loop
        
        Fun2 = n
    End Function
    Private Function Fun3(ByVal dd As Long, cc As Long) As Long
        Dim n As Long, m As Long, i As Long
        Dim numdd(0 To 9) As Long, numcc(0 To 9) As Long
        
        Do While dd > 0
            m = dd Mod 10
            numdd(m) = numdd(m) + 1
            dd = dd \ 10
        Loop
        
        Do While cc > 0
            m = cc Mod 10
            numcc(m) = numcc(m) + 1
            cc = cc \ 10
        Loop
        
        For i = 0 To 9
            If numcc(i) > 0 And numdd(i) > 0 Then
                n = n + numdd(i) + numcc(i)
            End If
        Next
        
        Fun3 = n
    End Function