楼主 君柳 |
题目:分区域排序 说明: 1、假设A列数据区的数据不连续; 2、每个数据区作为一组,分别排序成C列效果(C列结果批量生成); 3、排序规律为:先按字母排序,再按数字排序; 要求: 1、方法不限,答题时请注明适用版本; 2、方法具备通用性和扩展性; 评分: 1、非函数解法,或使用辅助列或定义名称或普通数组公式解题,可得1-5技能分; 2、函数解法使用内存数组解题,且不使用辅助列和定义名称,可获得4-8技能分; 3、精彩答案可再获得1-3技能分。 答题截止日期:2011-6-30 分区域排序.rar |
2楼 sharprain |
|
3楼 hlxz |
Sub 一列多区域排序() '按微软方式 K = 1 R = Range("A65536").End(xlUp).Row Do While K < R Set R1 = Range(Range("A" & K), Range("A" & K).End(xlDown)) K = Range("A" & K).End(xlDown).Row R1.Select Selection.Sort Key1:=Range("A" & K), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal K = Range("A" & K).End(xlDown).Row Loop End Sub 本回复 和题意有大部分 不符合 贴本代码意思是 : 用2次的 K = Range("A" & K).End(xlDown).Row 这段代码 第一个K 能轻松选取非空连续单元格的最后一行的行号 第二个K 能轻松选取空值连续单元格的后的第一个非空单元格的行号 爪爪 |
4楼 bluexuemei |
|
5楼 rongjun |
适用2003及以上版本
分区域排序.rar |
6楼 howlong |
1.适用版本:excel2003及以上 2.方法是否具备通用性和扩展性:否 3.是否用辅助列:是 4.是否使用内存数组:是 分区域排序 2011-05-29.zip |
7楼 君柳 |
微博测试 |
8楼 angellbxsc |
2003公式 c1:c18输入 INDEX(A1:A18,RIGHT(SMALL(COUNTIF(OFFSET(A$1,,,ROW(1:18)),"")*10^7+COUNTIF(A1:A18,"<="&LEFT(A1:A18,2))*10^5+(0&MID(A1:A18,3,3))*100+ROW(1:18),ROW(1:18)),2))&"" 有点长,回头看看能不能简化下。呵呵。 |