Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
123
返回列表 发新帖
楼主: 老鸭子

[已解决]智能判断代码的请求?

[复制链接]
发表于 2010-6-3 13:35 | 显示全部楼层

粗心了,这东西稍有马虎就错了。

Sub 判断()
    Dim ArrYS, ArrJG1, ArrJG2, i&, j%, strTZ$, k&, Count&, ArrCount, CToTal, ZCount
    ArrYS = Range("D2:Q" & Range("C65536").End(xlUp).Row)
    ReDim ArrJG1(1 To UBound(ArrYS), 1 To UBound(ArrYS, 2))
    ReDim ArrJG2(1 To UBound(ArrYS), 1 To UBound(ArrYS, 2))
    For i = 1 To UBound(ArrYS)
        If Len(ArrYS(i, 1)) = 0 Then
            For k = i To UBound(ArrYS) - 1
                If Len(ArrYS(k + 1, 14)) = 0 Then
                    Count = 0
                    If ZCount = 0 Then ZCount = k - 1
                    If k = UBound(ArrYS) - 1 Then
                        strTZ = ""
                        Exit For
                    End If
                    CToTal = CToTal + 1
                    strTZ = ArrYS(k, 14)
                    Exit For
                End If
            Next
        Else
            If Not IsArray(ArrCount) Then
                ReDim ArrCount(1 To ZCount, 1 To 14)
            End If
            Count = Count + 1
            For j = 1 To 14
                If Len(strTZ) > 0 And ArrYS(i, j) = strTZ Then
                    ArrJG1(i, j) = strTZ
                    ArrCount(Count, j) = ArrCount(Count, j) + 1
                End If
            Next
        End If
    Next
    For i = 1 To ZCount
        For j = 1 To 14
            If ArrCount(i, j) = CToTal Then
                For k = 0 To CToTal - 1
                    Count = (ZCount + 1) * k + i + 1
                    ArrJG2(Count, j) = ArrJG1(Count, j)
                Next k
            End If
        Next j
    Next i
    Range("S2").Resize(UBound(ArrJG1), 14) = ArrJG1
    Range("AH2").Resize(UBound(ArrJG2), 14) = ArrJG2
End Sub

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-6 05:05 , Processed in 0.374560 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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