广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    如何将多行多列单元格区域按照升序或者降序排列

    来源:网络收集  点击:  时间:2024-05-17
    【导读】:
    excel中给单个的行或者列进行排序很简单,但是如何给多行多列的数据同时按照升序或者排列呢?经过反复琢磨,我自己利用VBA代码实现了这一过程。分享如下,以飨读者。工具/原料moreMicrosoft excel软件方法/步骤1/7分步阅读

    1、 首先将开发工具显示在主菜单中:

    打开一个文档,单击左上角【文件】——【选项】——【自定义功能区】在页面右侧框中找到【开发工具】,在其左侧复选框中打勾,点击确定,即可。这样,开发工具选项就出现在功能区中。如下图

    2/7

    1、 进入开发界面。

    单击【开发工具】,可以在左侧看见【Visual Basic】,单击【Visual Basic】控件就进入VBA开发界面。单击【插入】——【模块】就进入编辑界面。

    3/7

    1、 新建子过程

    单击【插入】——【过程】得到如下,名称中自己写喜欢的名字,如:过程排序——类型选择子过程(s)——单击【确定】

    4/7

    1、 编辑代码

    然后代码如下:

    arr1 = Selection ’运行前首先要选择需要排序的区域

    x = UBound(arr1, 1)

    y = UBound(arr1, 2)

    Dim arr2()

    For i = 1 To x

    For j = 1 To y

    ReDim Preserve arr2(1 To x, 1 To y)

    m = (i - 1) * y + j

    s = WorksheetFunction.Small(arr1, m) ’small函数按照升序排列,反之,large函数按照降序排列

    arr2(i, j) = s

    Next j

    Next i

    .Resize(x, y) = arr2 ’为指定目标位置

    End Sub

    5/7

    1、 运行子过程

    首先在工作表中选中需要排序的区域,然后在VB编辑界面中单击【F5】即可实现排序。如下:

    特别注意:当然,为了方便操作,在代码编辑完成后可以添加一个控件,直接在工作表中操作。

    依次点击【开发工具】——【插入】——表单控件中选择左上角的控制按钮。

    然后单击过程排序,就可以实现。同时可以将按钮1 的名字改为自己喜欢的名字,如:给大爷排序

    在工作表中选中需要排序的区域(这次选择A1~F6区域)再单击【给大爷排序】就可以实现。

    不要忘记了,要将工作表另存为启用宏的工作簿(xlm),以后打开才能继续使用。

    6/7

    1、 通过函数过程实现

    代码如下:

    Public Function 函数排序(rng As Range) ’ 注意函数参数的类型

    arr1 = rng

    x = UBound(arr1, 1)

    y = UBound(arr1, 2)

    Dim arr2()

    For i = 1 To x

    For j = 1 To y

    ReDim Preserve arr2(1 To x, 1 To y)

    m = (i - 1) * y + j

    s = WorksheetFunction.Small(arr1, m)

    arr2(i, j) = s

    Next j

    Next i

    函数排序 = arr2

    End Function

    7/7

    1、 调用函数

    选择指定位置的单元格区域(注意范围要和拟定排序的区域大小一致),然后在公式框直接输入=函数排序()在括号内选择需要排序的区域,然后同时按下【Ctrl+Shift+Enter】三键,即可实现效果。

    例如:选择H12~M18区域作为存放结果的区域,然后在公式框输入=函数排(A1~F7),再按三键,即可实现。

    注意事项

    两种方法的核心代码其实几乎是一样的。

    不同之处在于,子过程需要在代码中提前指定存放结果的单元格位置,而函数则可以在输入公式之前再选择目标区域。

    代码还可以进一步简化,希望多多交流。

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_784741.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 10:16:35  耗时:0.029
    0.029s