ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > 单元格内各数字排列组合

单元格内各数字排列组合

作者:绿色风 分类: 时间:2022-08-18 浏览:119
楼主
Zaezhong
Q:在A1输入一个数(位数不确定,不多于6位),将该数中的数据一一取出进行排列组合,将重新组合的输按照从小到大的顺序排列?
A:由于嵌套的问题下列公式适合07以上版本
  1. =IF(COUNTIF(C$1:C1,"<>")<PERMUT(LEN(A$1),LEN(A$1)),SUM(MID(A$1,--MID(SMALL(IF(MMULT(1-ISERR(FIND(TRANSPOSE(Arr),RefRow)),Arr^0)=LEN(A$1),RefRow),ROW(C1)),Arr,1),1)*10^(LEN(A$1)-Arr)),"")
自定义名称:
  1. Arr=ROW(INDIRECT("1:"&LEN(Sheet1!$A$1)))
  1. RefRow=ROW(INDIRECT(10^LEN(Sheet1!$A$1)/10&":"&(LEN(Sheet1!$A$1)+1)*10^LEN(Sheet1!$A$1)/10))
如果A1单元格内的数各位上的数字互不相等,可以用
  1. =SMALL(IF(MMULT(1-ISERR(FIND(TRANSPOSE(MID($A$1,Arr,1)),ROW(INDIRECT(10^(LEN($A$1)-1)&":"&10^LEN($A$1))))),Arr^0)=LEN($A$1),ROW(INDIRECT(10^(LEN($A$1)-1)&":"&10^LEN($A$1)))),ROW(C1))
由于函数的缺陷,当数据量大的时候(比如A1为5位数以上时,计算的速度会感到明显变慢)。在此情况下建议用VBA完成2010-12-05_134944.gif
 

单元格内各数字排列组合.rar
2楼
wjc2090742
可以参考草版的帖子。
8个数据以内的组合 http://www.exceltip.net/thread-1380-1-1.html



 
3楼
Zaezhong

其实5位数的时候速度就比较慢了,输入7位以上时,在后面引用行的时候已经超出excel最大行数了
4楼
wjc2090742



我的截图的意思是7位的时候,结果已经错了。
5楼
Zaezhong

胖哥你回复地太快了,其实我3楼已经改了

看了下草版的帖子,好像不太相同
6楼
wjc2090742
我的意思这么难理解吗?

这句话要改:

 
7楼
Zaezhong

谢谢胖哥,一楼修改为不多于6位了
8楼
stevehai


免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap