EXCEL VBA 统计的问题?

根据E:G的数字(个位数0-9),对比H1:M1的数字,如果H1:M1的数字在E:G里面包含了2个,那么就在H9:M9开始对应的位置返回2,如是包含其它的数量就不管''''''''''''''''如果E:G为空,则为空''''''''''''''''''这是1张工作表的情况,工作表一共有"开始"和"1","2"…….一直到"20",共21个,都是一样的位置和格式''''''''''''''''''''请问这个用字典的方法怎么写啊?

可以H1:M1的内容定义6个字典,先对一个工作表编程,调试完毕后添加一层循环在每个表下执行。


调试通过的程序代码为:

执行示例结果:

程序代码文本:

Option Explicit

Sub 宏1()

    Dim a(), d(8 To 13) As Object, i&, j&, t, st As Worksheet

    For Each st In Sheets '对所有工作表

        '切换表,并获取内容到数组中

        st.Activate

        If Range("a1") = "" Then Range("a1") = " "

        a = st.UsedRange

        For i = 1 To UBound(a)

            For j = 1 To UBound(a, 2)

                a(i, j) = Trim(a(i, j))

            Next j

        Next i

        '建立字典,8-13表示H-M的列号

        For i = 8 To 13

            If Not d(i) Is Nothing Then

                d(i).RemoveAll

            Else

                Set d(i) = CreateObject("Scripting.Dictionary")

            End If

            a(1, i) = Trim(a(1, i))

            For j = 1 To Len(a(1, i))

                d(i)(Mid(a(1, i), j, 1)) = 1

            Next j

        Next i

        '循环判断

        For i = 2 To UBound(a)

            If a(i, 5) <> "" And a(i, 6) <> "" And a(i, 7) <> "" Then

                For j = 8 To 13

                    If d(j)(a(i, 5)) + d(j)(a(i, 6)) + d(j)(a(i, 7)) >= 2 Then

                        a(i, j) = 2

                    Else

                        a(i, j) = Empty

                    End If

                Next j

            End If

        Next i

        '数组回写表

        st.UsedRange = a

    Next st

End Sub

追问

辛苦老师了.
有个情况,就是1:8行,还有第A:G列有公式,不可以把他们都转变成数值.还麻烦你再修改一下.a1没公式,是空的.
返回的位置只是从H9开始

追答

粘贴不下修改后的程序代码,只有上图,我标记出了修改的两处地方,前处是两个地方的a(i,j)修改为Cells(i,j),后一处是删除了两行,变化是不是非常小,强烈建议楼主阅读理解代码,达到举一反三的效果:

追问

辛苦老师了,每个代码我都用F8去体会的,但是比较繁杂的代码我就有会混乱了.
这次好像只有一个表可以填入,其它的表都不填入了.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-10
您输入的内容过于简略
请再丰富一下内容重新提交
不敢回答你的问题, 兜兜都要封我的号。追问

为什么会封号?

第2个回答  2021-03-11
用2个循环,先对行,完了,再对每个分表

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网