接下来的问题就是用公式把我们上面的思路表达出来就可以了:
(假设10位不重复的数据存在A1:J1之中)
第一步,找第一个需要变的位置,公式,并定义名称:
x=MAX(IF(COLUMN($A:$J)<ROW($1:$10),( $A1:$J1<TRANSPOSE($A1:$J1))*COLUMN($A:$J)))
公式图解:
第二步,找该位置需要替换的数。公式,并定义名称:
y=MIN(IF(OFFSET($A1,,x,,10-x)>INDEX($A1:$J1,x),OFFSET($A1,,x,,10-x)))
这个公式比较简单,就不图解啦,哈哈~
最后一步,推算出下一个数。选中A2:J2,然后数组公式<ctrl+shift+enter>:
=IF(x>COLUMN($A:$J),A1:J1,IF(x=COLUMN($A:$J),y,SMALL(IF(OFFSET($J1,,,,x-11)<>y,OFFSET($J1,,,,x-11)),COLUMN($A:$J)-x)))
这个公式用了3层IF构成主要框架:第一层,当所在位置小于第一个需要替换位置x的时候,保持不变;第二层,当所在位置等于第一个需要替换位置x的时候,等于y,第三层,当所在位置大于第一个需要替换位置x的时候,从小到大排列。
到此,松了一口气,小功告成,选中A2:J2,按住填充柄往下拉就行啦。想拉多少就拉多少,而且还可以通过改变A1:J1的值来使它从你指定的位置开始算。嘿嘿~
辛苦能耐心看我这新人的帖子到这里的朋友。
谢谢大家围观~{:soso_e112:}
产生0~9所有组合.rar
(15.19 KB, 下载次数: 115)