EXCEL VBA的代码应该怎么写?

B1:E1的数字,对比J列的每行数字,看看出现的数字一致的有多少格;;;比如J1里07,08,09=0,实际上,07,08,09对比B1:E1,有1个08,说明这个J1里的=0是不一致的,不用计数;;;接着是J2里的03,06,09,12,15=2,实际上03,06,09,12,15对比B1:E1确实是2个,那么是一致的,计数1个;;;依次检查J3,J4,J5....,这里的5格中有2格是一致的,那么一共计数2个.就在 J6显示2;;;J列的5格,不一定是固定的5格,有可能多或少.请老师帮我看一下这个代码应该怎么写啊?
2026年09月23日 14:43
有3个网友回答
网友(1):

调试通过的代码如下:

Option Explicit


Sub x()

    Dim arrB, arrJ, n&, i&, j&, cnt&, x&, t, arr

    n = Cells(Rows.Count, "J").End(xlUp).Row 'J列最后一行

    arrB = Range("b1:e1")

    arrJ = Range("j1:j" & n)

    If InStr(arrJ(n, 1), "=") = 0 Then n = n - 1 '如果J列最后一会没有等号就去掉

    cnt = 0 '满足条件的行数

    For i = 1 To n

        arr = Split(arrJ(i, 1), "=") 'arr(0)值表,arr(1)计数

        x = 0 '存在值的个数

        For Each t In Split(arr(0), ",")

            For j = 1 To UBound(arrB, 2)

                If arrB(1, j) - t = 0 Then x = x + 1

            Next j

        Next t

        If arr(1) - x = 0 Then cnt = cnt + 1

    Next i

    Cells(n + 1, "J") = cnt

End Sub

网友(2):

逗号都是英文的么?

用代码的自定义函数。

网友(3):

没有看懂规律,哎