Excel精英培训网

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

如何写函数或VBA实现全排列

[复制链接]
发表于 2011-8-3 20:36 | 显示全部楼层 |阅读模式
比如在A1格输入123在B1:B6分别出现
123
132
213
231
312
321
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2011-8-6 22:32 | 显示全部楼层
http://baike.baidu.com/view/1710135.htm
全排列就是给定的4个元素时有24种排列,5个元素时120种。
网址那里也有的VB代码我没调试成功。
回复

使用道具 举报

发表于 2011-8-6 18:51 | 显示全部楼层
全排列是啥样子,你举列子是三个字符的
回复

使用道具 举报

 楼主| 发表于 2011-8-6 00:10 | 显示全部楼层
谢谢兰色幻想,但这个不是全排列,是大于等于3个时的取其中3个元素来排列。全排列的行数是长度N的阶乘,希望兰色幻想稍微改下,我可能要研究好久才回改~·
回复

使用道具 举报

发表于 2011-8-5 23:21 | 显示全部楼层

Sub dd()
Dim arr(1 To 1000, 1 To 1), arr1()
Dim x, y, z, k, num, j
num = Len([a1])
ReDim arr1(1 To Len([a1]))
For j = 1 To Len([a1])
arr1(j) = Mid([a1], j, 1)
Next j
For x = 1 To num
  For y = 1 To num
    For z = 1 To num
   If x <> y And x <> z And y <> z Then
    k = k + 1
    arr(k, 1) = arr1(x) & arr1(y) & arr1(z)
   End If
Next z, y, x
Range("b1").Resize(k) = arr
End Sub

评分

参与人数 1 +1 收起 理由
bl5062 + 1 期待大师修改一下

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 07:38 , Processed in 0.294812 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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