ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > 巧妙用常量数组调整数位顺序

巧妙用常量数组调整数位顺序

作者:绿色风 分类: 时间:2022-08-18 浏览:117
楼主
悟空师弟
求助:重组数值      
说明:如下图:
1、A单元格内为各位不等的三位数。     
2、重组规律:     
   各数位两两相互组合有6个新数,比如804拆开为8、0、4,两两组合:80、84、08、04、48、40     
   取十位比个位小的数,如上取出:08、04、48     
   再将取出来的数升序,并组合成一个数值,如上,组合为:040848

 
方法1:数组公式:
  1. =TEXT(SUM(LARGE(--MID(A1,{1,2,3},1),{3;2;3;1;2;1})*10^(6-ROW(1:6))),"000000")
方法2:数组公式:
  1. =RIGHT(0&SUM(SMALL(--MID(A1,{1;2;3},1),{3;2;3;1;2;1})*10^ROW(2:7))%,6)
方法3:普通公式:
  1. =RIGHT(SUM(LARGE(-MID(A1,{1,2,3},1),{1,2,3})/10^{1,2,4;3,5,6}),6)

 
   
解题思路:      
  看似复杂的数据重组,实际将有规律的三个数组合。      
以 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
忘记上传附件了?

免责声明

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

评论列表
sitemap