永发信息网

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,其它的做不到。
全部回答
  • 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯