|
楼主 |
发表于 2023-6-17 21:32
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
总结
首先感谢shaowu超人老师,这个题目是他首先提出的,再次感谢为本题提供答案的2位老师,分别是汤春晖老师跟三秋之叶老师。题目估计也是比较简单,大家热情不太高涨,算是针对排序的一个类型题目,掌握好思路可以对其它变形熟练解决,下面我就分析一下2位老师提供的答案。
一、汤老师
- INDEX(A:I,RIGHT(SMALL(INT(MMULT(N(ROW(2:25)>COLUMN(A:X)),1/C2:C25)-1%+1)/1%%-(D2:D25="户主")/1%+ROW(),ROW()-1),2),COLUMN(A:J))
复制代码 优点:可扩展性很强,当不只针对户主排序,例如加上配偶排序的时候只需要简单添加条件即可解决
缺点:稍显复杂,累加的时候不太方便,当然用TRANSPOSE也不是不可以
个人觉得
- INT(MMULT(N(ROW(2:25)>COLUMN(A:X)),1/C2:C25)-1%+1)
复制代码 写成- CEILING(MMULT(N(ROW(2:25)>COLUMN(A:X)),1/C2:C25),1)
复制代码 好点,看起来舒服点,就是按家庭排序,生成
- {1;1;1;1;2;2;2;2;2;3;3;3;3;3;3;4;4;4;5;5;5;6;6;6}
复制代码 这种序列,第一个家庭的都是1,第2个家庭是2,以此类推。
然后就是加权,排序就行了
在这里如果是要进行户主,配偶排序,那么(D2:D25="户主")
改为=MMULT(N(D2:D25={"户主","配偶"}),{2;1})
就行了,扩展性很强。
二、三秋之叶老师
- =INDEX(A:I,MOD(SMALL(IF(D2:D25="户主",SUMIF(OFFSET(D1,,,ROW(1:24)),"户主",C1),ROW(1:24))*100+ROW(2:25),ROW()-1),100),COLUMN()-10)
复制代码
优点:简单明了
缺点:扩展性不强
思路是:判断户主前面的家庭人口数,然后是户主的话就返回这个总人口数(紧跟排序),不是户主的话就返回第几个人的序数号。
最后,衷心的感谢三位老师以及其他支持的伙伴们,谢谢各位,以下是附件。
【参考答案】户主排序.zip
(20.29 KB, 下载次数: 7)
|
评分
-
3
查看全部评分
-
|