Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2634|回复: 7

[已解决]如何排序

[复制链接]
发表于 2014-7-24 21:17 | 显示全部楼层 |阅读模式
老师您好:如何能有效的排序呢?
将上面的表1变成下面的表2的样子,就是先换楼号大小排列,再按单元及楼层及几号屋排列。
表1:
房号
产权人
供暖面积
收费金额
优惠金额
实收金额
民生街98#5-4-1
赵云
50
1400
28
1362
民生街105#4-3-2
王东芝
50.89
1,424.92
28.50
1,396.42
民生街105#8-8-1
姜平
38.69
1,083.32
21.67
1,061.65
民生街105#1-2-1
王永家
5.76
161.25
32.25
129.00
民生街98#1-2-1
李平
50
1400
28
1362
民生街99#4-4-1
解井文
48.87
1,368.36
27.37
1,340.99
铁运小区224#4-2-3
宁学智
53.7
1,503.60
30.01
1,473.59
铁运小区220#5-3-2
马玉卓
35.44
992.32
19.85
972.47
表2:
房号
产权人
供暖面积
收费金额
优惠金额
实收金额
铁运小区220#5-3-2
马玉卓
35.44
992.32
19.85
972.47
铁运小区224#4-2-3
宁学智
53.7
1,503.60
30.01
1,473.59
民生街98#1-2-1
李平
50
1400
28
1362
民生街98#5-4-1
赵云
50
1400
28
1362
民生街99#4-4-1
解井文
48.87
1,368.36
27.37
1,340.99
民生街105#1-2-1
王永家
5.76
161.25
32.25
129.00
民生街105#4-3-2
王东芝
50.89
1,424.92
28.50
1,396.42
民生街105#8-8-1
姜平
38.69
1,083.32
21.67
1,061.65

真的是百思不得其解。请老师帮帮忙吧!不胜感激!

最佳答案
2014-7-25 09:10
本帖最后由 baksy 于 2014-7-25 09:46 编辑

公式更新~
A12单元格公式,三键回车(点击公式编辑栏中的任意位置,按住 shift、ctrl 两个键,然后敲enter键 )
横拉、下拉;
=INDEX(A$2:A$9,MATCH(SMALL(--SUBSTITUTE(SUBSTITUTE(RIGHT($A$2:$A$9,2*LEN($A$2:$A$9)-LENB($A$2:$A$9)),"#","."),"-",),ROW(A1)),--SUBSTITUTE(SUBSTITUTE(RIGHT($A$2:$A$9,2*LEN($A$2:$A$9)-LENB($A$2:$A$9)),"#","."),"-",),))
发表于 2014-7-24 21:27 | 显示全部楼层
只有把楼号和单元和楼层分开,再排序咯。
回复

使用道具 举报

发表于 2014-7-24 21:35 | 显示全部楼层
QQ截图20140724213519.png

成吗.rar

9.4 KB, 下载次数: 4

回复

使用道具 举报

发表于 2014-7-24 21:39 | 显示全部楼层
等高手指点吧,呵呵
回复

使用道具 举报

发表于 2014-7-25 06:22 | 显示全部楼层
本帖最后由 baksy 于 2014-7-25 09:09 编辑

A12单元格公式,三键回车(点击公式编辑栏中的任意位置,按住 shift、ctrl 两个键,然后敲enter键 )
横拉、下拉;
=INDEX(A$2:A$9,MATCH(SMALL(--SUBSTITUTE(SUBSTITUTE(RIGHT($A$2:$A$9,2*LEN($A$2:$A$9)-LENB($A$2:$A$9)),"#","."),"-","0"),ROW(A1)),--SUBSTITUTE(SUBSTITUTE(RIGHT($A$2:$A$9,2*LEN($A$2:$A$9)-LENB($A$2:$A$9)),"#","."),"-","0"),))

效果如下;
房号
产权人
供暖面积
收费金额
优惠金额
实收金额
民生街98#1-2-1
李平
50
1400
28
1362
民生街98#5-4-1
赵云
50
1400
28
1362
民生街99#4-4-1
解井文
48.87
1368.36
27.37
1340.99
民生街105#1-2-1
王永家
5.76
161.25
32.25
129
民生街105#4-3-2
王东芝
50.89
1424.92
28.5
1396.42
民生街105#8-8-1
姜平
38.69
1083.32
21.67
1061.65
铁运小区220#5-3-2
马玉卓
35.44
992.32
19.85
972.47
铁运小区224#4-2-3
宁学智
53.7
1503.6
30.01
1473.59
回复

使用道具 举报

发表于 2014-7-25 09:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 baksy 于 2014-7-25 09:46 编辑

公式更新~
A12单元格公式,三键回车(点击公式编辑栏中的任意位置,按住 shift、ctrl 两个键,然后敲enter键 )
横拉、下拉;
=INDEX(A$2:A$9,MATCH(SMALL(--SUBSTITUTE(SUBSTITUTE(RIGHT($A$2:$A$9,2*LEN($A$2:$A$9)-LENB($A$2:$A$9)),"#","."),"-",),ROW(A1)),--SUBSTITUTE(SUBSTITUTE(RIGHT($A$2:$A$9,2*LEN($A$2:$A$9)-LENB($A$2:$A$9)),"#","."),"-",),))
回复

使用道具 举报

发表于 2014-7-25 09:48 | 显示全部楼层
本帖最后由 滴答滴 于 2014-7-25 10:14 编辑

仅针对题目数据
写如下公式
遵循规则:
相同小区排在一起
小区排序按字符编码小的在前
同小区楼号小的在前
之后的"单元-楼层-房号"我取巧用日期处理
默认我视作5位
一般单元数不超过9,房号也小于9,楼层若不超过9层一般无问题
排序之后,再用vlookup查找引用其它数据即可。
  1. =INDEX(A:A,RIGHT(SMALL(CODE(A2:A9)/1%%+LEFT(RIGHT(A2:A9,2*LEN(A2:A9)-LENB(A2:A9)),2*LEN(A2:A9)-LENB(A2:A9)-6)+RIGHT(A2:A9,5)*10^-5+ROW(A2:A9)%%%,ROW(1:8))))
复制代码
区域数组公式
结果如下示例
房号        
民生街98#5-4-1        民生街98#1-2-1
民生街105#4-3-2        民生街98#5-4-1
民生街105#8-8-1        民生街99#4-4-1
民生街105#1-2-1        民生街105#1-2-1
民生街98#1-2-1        民生街105#4-3-2
民生街99#4-4-1        民生街105#8-8-1
铁运小区224#4-2-3        铁运小区220#5-3-2
铁运小区220#5-3-2        铁运小区224#4-2-3


补充:若有 比如“民生小区”、”民立小区“ ”铁运小区“ ”铁岭小区“这种
则上面公式中
CODE(A2:A9)/1%%
改为(code(left(a2:a9))+code(mid(a2:a9,2,1)))*10^3
不用/1%%是因为数值运算位数过多,可能会出错。
公式如下
  1. =INDEX(A:A,RIGHT(SMALL((CODE(LEFT(A2:A9))+CODE(MID(A2:A9,2,1)))*10^3+LEFT(RIGHT(A2:A9,2*LEN(A2:A9)-LENB(A2:A9)),2*LEN(A2:A9)-LENB(A2:A9)-6)+RIGHT(A2:A9,5)*10^-5+ROW(A2:A9)%%%,ROW(1:8))))
复制代码
效果:
房号
民生街98#5-4-1
民立街105#8-8-1
民生街105#4-3-2
民生街98#1-2-1
民立街105#8-8-1
民生街98#5-4-1
民生街105#1-2-1
民生街99#4-4-1
民生街98#1-2-1
民生街105#1-2-1
民生街99#4-4-1
民生街105#4-3-2
铁运小区224#4-2-3
铁岭小区220#5-3-2
铁岭小区220#5-3-2
铁运小区224#4-2-3
回复

使用道具 举报

发表于 2014-7-25 12:11 | 显示全部楼层
我的有问题?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 21:39 , Processed in 0.508799 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表