excel计算12个字符排列组合
答案:2 悬赏:0 手机版
解决时间 2021-02-09 00:15
- 提问者网友:雨不眠的下
- 2021-02-08 19:21
如何计算类似于(1a2b,2232,2256,2256,9870,9876,9842,uytr,8i8i,10o9,19i7,290o)所以形成的组合
最佳答案
- 五星知识达人网友:七十二街
- 2021-02-08 19:39
我算了一下,12个字符的全排列是479001600个,如果放在07版以上的Excel工作表了,一个单元格写一个,需要每列写满1048576行,一共需要将近457列。
这个任务有点麻烦,除了VBA,其它的做不到。
这个任务有点麻烦,除了VBA,其它的做不到。
全部回答
- 1楼网友:胯下狙击手
- 2021-02-08 20:40
excel本身没有这个功能或者函数,用excel做一个自定义函数才能实现。
sub test()
dim myar as variant, i as integer, j as integer, k as double, p as integer, q as integer
dim numfree() as boolean, totalnum as double, mymtrx() as integer
dim myfetch() as integer
totalnum = application.worksheetfunction.permut(4, 4)
redim numfree(1 to 4) '输入数字返回该数是否自由(未取)
redim mymtrx(1 to totalnum, 1 to 4)
redim myfetch(1 to 4) '输入列号,返回该列应取数字
for i = 1 to 4
myfetch(i) = i '初始化
next i
for k = 1 to totalnum
for i = 1 to 4 '列号
mymtrx(k, i) = myfetch(i)
next i
numfree(myfetch(4)) = true '释放最末列的数字
for j = 4 - 1 to 1 step -1 '从倒数第2列开始往前
numfree(myfetch(j)) = true '释放当前列
for i = myfetch(j) + 1 to 4 '向下试探
if numfree(i) then
myfetch(j) = i
numfree(i) = false
for p = j + 1 to 4 '从当前列往后逐列从上往下找数
for q = 1 to 4 '数字从上往下找
if numfree(q) then
myfetch(p) = q
numfree(q) = false
exit for
end if
next q
next p
exit for
end if
next i
if not numfree(myfetch(4)) then '最末列都取到数了,跳出
exit for
end if
next j
next k
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯