楼主 悟空师弟 |
求助:重组数值 说明:如下图: 1、A单元格内为各位不等的三位数。 2、重组规律: 各数位两两相互组合有6个新数,比如804拆开为8、0、4,两两组合:80、84、08、04、48、40 取十位比个位小的数,如上取出:08、04、48 再将取出来的数升序,并组合成一个数值,如上,组合为:040848 方法1:数组公式:
解题思路: 看似复杂的数据重组,实际将有规律的三个数组合。 以 804 为例: 比“大”数大的没有,即与百位组合且符合条件的没有一个。 比“小”数大的有两个,即与十位组合且符合条件的有两个:08、04 比“中”数大的有一个,即与个位组合且符合条件的有一个:48 从小到大排序为:04、08、48,规律为:小中、小大、中大 最终组合顺序为: “小中小大中大”,也就是“040848”,即依次取“804”中的“小”、“中”、“小”、“大”、“中”、“大” 见方法1:=TEXT(SUM(SMALL(--MID(A1,{1,2,3},1),{3;2;3;1;2;1})*10^ROW(2:7))%,"000000") LARGE(--MID(A1,{1,2,3},1),{3;2;3;1;2;1}) 公式中上面这一段巧妙利用常量数组{3;2;3;1;2;1}将数位顺序按要求排列,得出符合要求的一组数:{0;4;0;8;4;8} 此段公式 *10^(6-ROW(1:6)) 得到一组新数据:{0;40000;0;800;40;8},用SUM函数求和后恰好将各数值归位到对应的位数,即“40848”。 TEXT函数的作用是将“小”数是0结果为5位数的数值型数据转换成前面带“0”的文本型数据。如:“40848”转为“040848”。 方法2和方法3为方法1的扩展,理解方法1再慢慢理解方法2和3. (此题解题思路部分不适新手学习,如有疑问,欢迎回帖追问) |
2楼 liuguansky |
忘记上传附件了? |