Excel精英培训网

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

[已解决]请有空的童鞋帮忙写个公式或VBA,三位数(数字+字母)全组合,谢谢

[复制链接]
发表于 2014-1-14 10:45 | 显示全部楼层 |阅读模式
本帖最后由 xhczq 于 2014-1-14 11:17 编辑

请有空的童鞋帮忙写个公式或VBA,三位数(数字+字母)全组合,谢谢

0-9
小写:a-z
大写:A-Z
三位数,所有组合

万分感谢
最佳答案
2014-1-14 11:09
本帖最后由 xdragon 于 2014-1-14 14:20 编辑
  1. Sub t()
  2.   Dim i%, j%, k%, arr(1 To 238328, 1 To 1), cnt&
  3.   For i = 48 To 122
  4.     If i < 58 Or (i > 64 And i < 91) Or i > 96 Then
  5.     For j = 48 To 122
  6.       If j < 58 Or (j > 64 And j < 91) Or j > 96 Then
  7.       For k = 48 To 122
  8.          If k < 58 Or (k > 64 And k < 91) Or k > 96 Then
  9.             cnt = cnt + 1
  10.             arr(cnt, 1) = Chr(i) & Chr(j) & Chr(k)
  11.          End If
  12.       Next
  13.       End If
  14.     Next
  15.     End If
  16.   Next
  17.   [a1].Resize(UBound(arr)) = arr
  18. End Sub
复制代码
21w6000种组合。。。。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-1-14 10:48 | 显示全部楼层
回复

使用道具 举报

发表于 2014-1-14 10:50 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-1-14 10:57 | 显示全部楼层
CheryBTL 发表于 2014-1-14 10:50
各取一位么?VBA用循环即可。

循环
如果VBA就太方便了,做个按扭,一点所有组合全部产生
谢谢
回复

使用道具 举报

发表于 2014-1-14 11:02 | 显示全部楼层
xhczq 发表于 2014-1-14 10:57
循环
如果VBA就太方便了,做个按扭,一点所有组合全部产生
谢谢

Sub ep()
    Dim i As Integer, j As Integer, k As Integer, Rnum As Long
    Dim re()
    Dim X1, X2(0 To 25), X3(0 To 25)
    X1 = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
    ReDim re(1 To 10 * 26 * 26, 1 To 1)
    For i = 0 To 25
        X2(i) = Chr(i + 65)
        X3(i) = Chr(i + 97)
    Next i
    For i = 0 To UBound(X1)
        For j = 0 To UBound(X2)
            For k = 0 To UBound(X3)
               Rnum = Rnum + 1
                re(Rnum, 1) = X1(i) & X2(j) & X3(k)
            Next k
        Next j
    Next i
    Sheets(1).[a1].Resize(Rnum) = re
End Sub

数字和字母的组合.rar (32.41 KB, 下载次数: 20)
回复

使用道具 举报

发表于 2014-1-14 11:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xdragon 于 2014-1-14 14:20 编辑
  1. Sub t()
  2.   Dim i%, j%, k%, arr(1 To 238328, 1 To 1), cnt&
  3.   For i = 48 To 122
  4.     If i < 58 Or (i > 64 And i < 91) Or i > 96 Then
  5.     For j = 48 To 122
  6.       If j < 58 Or (j > 64 And j < 91) Or j > 96 Then
  7.       For k = 48 To 122
  8.          If k < 58 Or (k > 64 And k < 91) Or k > 96 Then
  9.             cnt = cnt + 1
  10.             arr(cnt, 1) = Chr(i) & Chr(j) & Chr(k)
  11.          End If
  12.       Next
  13.       End If
  14.     Next
  15.     End If
  16.   Next
  17.   [a1].Resize(UBound(arr)) = arr
  18. End Sub
复制代码
21w6000种组合。。。。
回复

使用道具 举报

 楼主| 发表于 2014-1-14 11:10 | 显示全部楼层
CheryBTL 发表于 2014-1-14 11:02
Sub ep()
    Dim i As Integer, j As Integer, k As Integer, Rnum As Long
    Dim re()

谢谢老师,这样写我差不多可以看得明白,又学到东西了,非常高兴。
祝老师新年快乐
回复

使用道具 举报

发表于 2014-1-14 11:12 | 显示全部楼层
CheryBTL 发表于 2014-1-14 11:02
Sub ep()
    Dim i As Integer, j As Integer, k As Integer, Rnum As Long
    Dim re()

会vba就是好呀,
回复

使用道具 举报

 楼主| 发表于 2014-1-14 11:16 | 显示全部楼层
xdragon 发表于 2014-1-14 11:09
21w6000种组合。。。。

谢谢
回复

使用道具 举报

 楼主| 发表于 2014-1-14 11:23 | 显示全部楼层
xdragon 发表于 2014-1-14 11:09
21w6000种组合。。。。

您好,用了发现一个问题
没有00a,00b
所有数字带小写a、b都没
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 21:03 , Processed in 0.392114 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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