Excel精英培训网

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

[已解决]求一个自动生成序号的VBA

[复制链接]
发表于 2015-12-14 21:47 | 显示全部楼层 |阅读模式
aaa 1
aaa 2
aaa 3
bbb 1
bbb 2
bbb 3
ccc 1
ddd 1
ddd 2
ddd 3
想找一个简单的VBA自动生成序号,可以做到吗?最好能够在指定的列里执行{:021:}
因为要处理的数量很大,一页里6万多条,用公式生成电脑实在受不了
最佳答案
2015-12-15 09:22
Sub Click()
    Dim A, d, i
    Range("b:b").ClearContents
    A = Range([a1], Cells(Rows.Count, 1).End(3))
    Set d = CreateObject("scripting.dictionary")
    For i = 1 To UBound(A)
        d(A(i, 1)) = d(A(i, 1)) + 1
        A(i, 1) = d(A(i, 1))
    Next i
    [b1].Resize(UBound(A)) = A
End Sub
1.rar (15.29 KB, 下载次数: 23)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-12-15 08:17 | 显示全部楼层
回复

使用道具 举报

发表于 2015-12-15 09:22 | 显示全部楼层    本楼为最佳答案   
Sub Click()
    Dim A, d, i
    Range("b:b").ClearContents
    A = Range([a1], Cells(Rows.Count, 1).End(3))
    Set d = CreateObject("scripting.dictionary")
    For i = 1 To UBound(A)
        d(A(i, 1)) = d(A(i, 1)) + 1
        A(i, 1) = d(A(i, 1))
    Next i
    [b1].Resize(UBound(A)) = A
End Sub
1.rar (15.29 KB, 下载次数: 23)

评分

参与人数 1 +5 收起 理由
sry660 + 5 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-12-15 18:52 | 显示全部楼层
爱疯 发表于 2015-12-15 09:22
Sub Click()
    Dim A, d, i
    Range("b:b").ClearContents

能不能在指定列生成呢?
回复

使用道具 举报

发表于 2015-12-15 19:02 | 显示全部楼层
c5h8o4nna 发表于 2015-12-15 18:52
能不能在指定列生成呢?

比如,输出在F列,下句改下就行了

[f1].Resize(UBound(A)) = A
回复

使用道具 举报

 楼主| 发表于 2015-12-15 19:15 | 显示全部楼层
本帖最后由 c5h8o4nna 于 2015-12-15 19:18 编辑
爱疯 发表于 2015-12-15 19:02
比如,输出在F列,下句改下就行了

[f1].Resize(UBound(A)) = A

原来如此

那又如果需要排序的列不是A,而是B列或其它列,那又怎么做呢?
A = Range([a1], Cells(Rows.Count, 1).End(3))
a1改为b1吗?
回复

使用道具 举报

发表于 2015-12-15 19:31 | 显示全部楼层
比如,数据在P和Q两列,就改成

A = Range([p1], Cells(Rows.Count, "q").End(3))
回复

使用道具 举报

 楼主| 发表于 2015-12-15 19:46 | 显示全部楼层
爱疯 发表于 2015-12-15 19:31
比如,数据在P和Q两列,就改成

A = Range([p1], Cells(Rows.Count, "q").End(3))

如果在B列, A = Range([b1], Cells(Rows.Count, 1).End(3))
对吗


回复

使用道具 举报

发表于 2015-12-15 19:51 来自手机 | 显示全部楼层
c5h8o4nna 发表于 2015-12-15 19:46
如果在B列, A = Range([b1], Cells(Rows.Count, 1).End(3))
对吗

数据源在b列,就把7楼有颜色的两个字符都改成b。
回复

使用道具 举报

 楼主| 发表于 2015-12-15 20:05 | 显示全部楼层
爱疯 发表于 2015-12-15 19:51
数据源在b列,就把7楼有颜色的两个字符都改成b。

用了你那个VBA不行哦,我的源在B列,结果把B列的数据全部删了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 12:10 , Processed in 0.164333 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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