在写vba项目时,经常会遇到需要对结果进行排序的情况。
如果是一维数组的排序,那么很多人可能还会去用一些排序的算法代码,但是如果要排序的数据是多维,或者是多行多列的单元格区域需要进行多个字段多条件的排序时,这时候为了效率,强烈推荐用内置的excel排序功能。
把多维数组先赋值到单元格区域中,然后用内置的excel排序功能进行排序,即节省了时间又减少了代码量。
如下图所示
如果要在vba中对A1:B7单元格区域按照销售额进行排序,这里提供一个模板代码,日后只需简单修改就可以应用到其它场景:
Sub 调用excel内置的排序功能() 'QQ:1722187970,微信:xycgenius,公众号:水星excel Dim oWK As Worksheet Set oWK = Excel.Worksheets("Sheet1") Dim oSort As Sort Dim iRow As Long With oWK '获取要排序的区域的最后一个单元格所在的行号 iRow = .Range("a65536").End(xlUp).Row Set oSort = .Sort With oSort '删除原来的排序字段 .SortFields.Clear '添加新的排序字段,第一个关键字 .SortFields.Add Key:=oWK.Range("a1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortTextAsNumbers '添加新的排序字段,第二个关键字 .SortFields.Add Key:=oWK.Range("b1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal '设置排序的单元格区域 .SetRange oWK.Range("a1:b" & iRow) '设置排序的方法 .SortMethod = xlPinYin '设置排序的方向 .Orientation = xlSortColumns '设置是否包含列标题 .Header = xlYes '开始排序 .Apply End With End With End Sub
在vba中调用excel的排序功能,主要是操作Sort对象,首先用SortFields.Clear清除所有的排序字段,然后再用SortFields.Add方法添加排序字段,也就是以哪个字段按照升序或者降序排序,然后用Sort.SetRange设置排序区域,最后用Sort.Apply应用排序。
发表评论