Excel精英培训网

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

[已解决]怎样添加一个计数统计?

[复制链接]
发表于 2010-8-19 17:24 | 显示全部楼层 |阅读模式
各位老师:
    怎样在代码test中对s列添加一个计数统计? hVsOC1mI.zip (10.78 KB, 下载次数: 14)
发表于 2010-8-19 17:58 | 显示全部楼层    本楼为最佳答案   

Sub test()
    Dim arr, i%, k%, arrt, d
    Set d = CreateObject("scripting.dictionary")
    arr = Range("a2:c" & [a65536].End(3).Row)
    For i = 1 To UBound(arr)
        If Not d.Exists(arr(i, 3)) Then
            d(arr(i, 3)) = arr(i, 2)
        Else
            d(arr(i, 3)) = d(arr(i, 3)) & "," & arr(i, 2)
        End If
    Next
    Range("g2:s11").ClearContents
    For k = 2 To [f65536].End(3).Row
        arrt = Split(d(Cells(k, "F") & ""), ",")
        Cells(k, "G").Resize(1, UBound(arrt) + 1) = arrt
        Cells(k, "S") = UBound(arrt) + 1
        Erase arrt
    Next
    Range("f2").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys)
End Sub

加上蓝色的这句

回复

使用道具 举报

 楼主| 发表于 2010-8-19 18:06 | 显示全部楼层

QUOTE:
以下是引用爱疯在2010-8-19 17:58:00的发言:

Sub test()
    Dim arr, i%, k%, arrt, d
    Set d = CreateObject("scripting.dictionary")
    arr = Range("a2:c" & [a65536].End(3).Row)
    For i = 1 To UBound(arr)
        If Not d.Exists(arr(i, 3)) Then
            d(arr(i, 3)) = arr(i, 2)
        Else
            d(arr(i, 3)) = d(arr(i, 3)) & "," & arr(i, 2)
        End If
    Next
    Range("g2:s11").ClearContents
    For k = 2 To [f65536].End(3).Row
        arrt = Split(d(Cells(k, "F") & ""), ",")
        Cells(k, "G").Resize(1, UBound(arrt) + 1) = arrt
        Cells(k, "S") = UBound(arrt) + 1
        Erase arrt
    Next
    Range("f2").Resize(d.Count, 1) = WorksheetFunction.Transpose(d.keys)
End Sub

加上蓝色的这句

请问爱疯老师:“For k = 2 To [f65536].End(3).Row”语句中,End(3).里面的‘3’是什么意思?另:“ arrt = Split(d(Cells(k, "F") & ""), ",")”语句中的 "F"代表什么?

[此贴子已经被作者于2010-8-19 18:07:30编辑过]
回复

使用道具 举报

发表于 2010-8-19 18:23 | 显示全部楼层

QUOTE:
以下是引用gwfzh在2010-8-19 18:06:00的发言:

请问爱疯老师:“For k = 2 To [f65536].End(3).Row”语句中,End(3).里面的‘3’是什么意思?另:“ arrt = Split(d(Cells(k, "F") & ""), ",")”语句中的 "F"代表什么?



For k = 2 To [f65536].End(3).Row

For k = 2 To [f65536].End(xlUp).Row  意思一样的

xlToLeft,xlToRight,xlUp和xlDown   分别对应为 1  2  3  4

arrt = Split(d(Cells(k, "F") & ""), ",")    F为F列

回复

使用道具 举报

发表于 2010-8-19 18:57 | 显示全部楼层

end(3)这个3就是xluP即从下往上的意思

cells(k,"F")这个F是列标签,即表示第K行F列交叉的单元格,K是个变量

如:cells(1,"F")就是指F1单元格也可以表示为range("F1")或cells(1,6)

[f65536].end(3).row是指F列最后一个非空单元格的行号。

F列的最后一个单元格即F65536向上找第一个非空(有数据的)单元格。(注:03版最大行数为65536行)

[此贴子已经被作者于2010-8-19 18:58:22编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-8-20 08:51 | 显示全部楼层

谢谢各位老师!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 23:17 , Processed in 0.305268 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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