作者:绿色风
分类:
时间:2022-08-18
浏览:119
楼主 Zaezhong |
Q:在A1输入一个数(位数不确定,不多于6位),将该数中的数据一一取出进行排列组合,将重新组合的输按照从小到大的顺序排列? A:由于嵌套的问题下列公式适合07以上版本- =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)),"")
自定义名称:- Arr=ROW(INDIRECT("1:"&LEN(Sheet1!$A$1)))
- RefRow=ROW(INDIRECT(10^LEN(Sheet1!$A$1)/10&":"&(LEN(Sheet1!$A$1)+1)*10^LEN(Sheet1!$A$1)/10))
如果A1单元格内的数各位上的数字互不相等,可以用- =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总版主之一