如何批量对Excel某个区域从小到大数值排序

如何批量对Excel某个区域从小到大数值排序,如下图所示:

左侧3组数据互不关联,我需要对每组内部数据首列进行从小到大排序,手动虽然可以选中那些行一个个排序,但是数据太多了,就太慢了,又不能用Ctrl部分选中进行排序,会提示“不能对多重区域操作”,求大神有没有好的公式可以实现,不胜感激!

    如果A列是数值的话,D2输入:=COUNTBLANK($A$2:A2)*1000+A2,下拉填充到与表中数据同行;

    以D列为主关键字升序排序;

    排序后删除D列。

追问

好像可以,感谢啊,我再试试

追答

没有交叉啊,看了上面的截图么,D列最后是删除掉的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-18
先将三个区域之间的空单元格删徐,将其排序后,再插入单元格,就可以了!我已经试过了是可以的,希望能帮到你!追问

。。。。
这3组数值都是毫不相关的,不能这么排序

第2个回答  2015-06-18
需不需要扩展到B、C列啊?就是既然A列排序了,BC列需不需要一起跟着排序啊,看你的图没跟着一起排序追问

是的 一起排序,但只以A列数据作为参考

追答

你这3组数据是根据B列来区分开的?即B列相同就认为是同一组的?

追问

是的

第3个回答  2015-06-18
这不可能用公式或普通排序的方法解决,只能用VBA的方法,引入当前区域的概念,利用循环,对每一个“当前区域”进行排序追问

有现成的公式吗,帮帮忙,VBA也可以

追答

Private Sub 特殊排序()
With Sheet1
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If Trim(.Cells(i + 1, 1)) = "" Then
.Range("A" & i).CurrentRegion.Sort .Range("A" & .Range("A" & i).CurrentRegion.Row)
End If
Next
end with
End Sub
试试这个,以上以按A列排序,表中所有所有数据(所有列)参于排序,数据从第二行开始(当然从其他行开始也行)
为防止数据排序发意外无法恢复,建议先作备份
匆忙编制,未曾检验,你先试试,不行我再修改

追问

这个公式不行,我刚试过

追答

你的工作表是不是sheet1?
你将with sheet1这一句改成
With worksheets("工作表名")再试试

第4个回答  2015-06-18
选定数据--数据--排序--升/降序--确认追问

不是这样的,这样就容易对一整列都排序,这3个数据部分是分开的,互不相关的。