精华内容
下载资源
问答
  • Excel VBA数据排序

    千次阅读 2020-02-20 20:53:58
    在如图1所示数据列表中,需要按总成绩从高到低进行排序,示例代码如下。 Sub SortDemo() Range("A1").Sort key1:="总成绩", order1:=xlDescending, _ Header:=xlYes End Sub 运行SortDemo过程,排序结果如图2所...

    关注微信公众号:VBA168
    每天更新Excel VBA经典代码,祝你工作和学习更轻松!

    在如图1所示数据列表中,需要按总成绩从高到低进行排序,示例代码如下。

    Sub SortDemo()
        Range("A1").Sort key1:="总成绩", order1:=xlDescending, _
            Header:=xlYes
     End Sub
    

    运行SortDemo过程,排序结果如图2所示。

    在这里插入图片描述
    图1 待排序数据列表

    在这里插入图片描述

    图2 按总成绩降序排序结果

    Range对象的Sort方法对区域进行排序,其语法格式如下。

    Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)
    

    其中,参数Key1、Key2和Key3是可选的,分别指定第1排序字段、第2排序字段、第3排序字段,作为区域名称(字符串)或Range对象,以确定要排序的值。

    参数Order1、Order2和Order3是可选的,其值可为xlAscending,按升序对指定字段排序(默认值);或者是xlDescending,按降序对指定字段排序。

    参数Header是可选的,用于指定第1行是否包含标题信息,其值可为xlGuess,表示由Excel确定是否有标题;xlNo,表示不包含标题(默认值);xlYes,表示包含标题。

    Range对象的Sort方法最多可以指定3个排序字段,如下示例代码对图1所示数据集以“总成绩”、“学科1”和“学科2”分别为第1字段、第2字段和第3字段进行排序,排序结果如图3所示​。

    Sub SortDemoA()
        Range("A1").Sort key1:="总成绩", order1:=xlDescending, _
            key2:="学科1", order2:=xlDescending, _
            key3:="学科2", order3:=xlDescending, _
            Header:=xlYes
    End Sub
    

    在这里插入图片描述
    图3 按3个关键字排序结果

    展开全文
  • VBA操作Excel内容排序,用Sort函数对工作表内容排序

    万次阅读 多人点赞 2019-02-18 23:52:47
    今天有同学问到关于大批量Excel的Sheet如何简化排序,但是网上的攻略比较混乱。因此,在这做一下示例。 需求:80页sheet的Excel文档,每页的格式相同,基本内容如下,要求根据A列,升序排列。 代码如下: ...

    今天有同学问到关于大批量Excel的Sheet如何简化排序,但是网上的攻略比较混乱。因此,在这做一下示例。

    需求:80页sheet的Excel文档,每页的格式相同,基本内容如下,要求根据A列,升序排列。

    代码如下:

    Option Explicit
    Sub MySort()
    Dim i As Integer
    Dim maxRow As Integer
    Dim sht As Worksheet
    
    '遍历所有工作表
    For i = 1 To ActiveWorkbook.Worksheets.Count
    
        Set sht = ActiveWorkbook.Worksheets(i)
    
        '激活当前工作表,Sort只能排序当前工作表
        sht.Activate
    
        '获取当前表最大行数
        maxRow = sht.UsedRange.Rows.Count
    
        '选取范围进行排序:这里是选取a3:ao41(前两行因为是标题,所以不选);key是排序的列,这里写a3,表示以a列为依据排序,最多可以写3个key;order表示升序降序;Header表示是否有标题,由于我们没选a1、a2,所以这里写no
        sht.Range("a3:ao" & maxRow).Sort key1:=sht.Range("a3"), order1:=xlAscending, Header:=xlNo
    
    Next i
    
    End Sub

     

    注意,Vba的排序函数为Sort,基本用法如下:

    Range("待排序数据区域").Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3,
            Header, OrderCustom, MatchCase, Orientation, SortMethod,
            DataOption1, DataOption2, DataOption3)
    其中各类型参数的意义如下:
    ① key1、key2、key3
    这些key是排序的关键列(或行)的单元格地址,如 Range("A1")
    实际只要选对列标题即可,对行数要求不敏感。

    【行数要求不敏感】
    即数据区域中任意行数都可以: Range("A1")、或Range("A2")、或Range("A1000")都可以。

    【注意】
    1. 一次Sort只能调用至多3个参数,没有key4可以使用。
    2. 至少使用1个参数即可,即key2、key3可以省去不用。

    【引用方法】
    1. 带参数名引用,如: key1:=Range("G3")
       带参数名引用时
    2. 参数位置引用,即按照上述Sort命令的参数顺序直接应用,
       如: Range("A1:I19").Sort key1:=Range("G3")  即第1位置参数即为key1
    ②  Order1、Order2、Order3
       这些Order是排序的顺序模式指定参数。即: A-Z升序、或Z-A降序
        参数的模式名称为:
              A-Z升序= xlAscending 或直接=1
                   Z-A降序= xlDescending 或直接=2
      带参数名引用时:
      Order1:=xlAscending  或 Order1:= 1
      参数位置引用时,紧跟key后面。(但注意key2和Order2之间要隔一个Type参数)
    ③  Header
        即是否有标题行参数,一共有3个值:
        Header:= xlGuess=0 或xlYes=1 或 xlNo=2
        即=xlGuess、或=0时,工作表自己判断
         =xlYes、或=1时,强制第1行为列标题,即第1行【不参与排序】
         =xlNo、或=2时,强制没有列标题。即第1行【也参与排序】
      带参数名引用时:
       如: Header:= xlGuess
       参数位置引用时,在第7个逗号之后。
      (如果key只有1个时,要连续空6个逗号,
       如:Range("A1:I19").Sort Range("A1"), 1, , , , , , 2 (order1之后连续写6个逗号)
    ④ MatchCase 是否匹配大小写
        MatchCase:=False 、或=0 不区分大小写
        MatchCase:=True 、或=1 区分大小写(Case Sensitive)
    ⑤ Orientation 排序方向 
       一般为同一列中从上到下各行进行排序:Orientation:= xlTopToBottom 、或=1
        如果是: 同一行中从左到右各列进行排序,则为:Orientation:= xlLeftToRight、或=2
    ⑥ SortMethod 排序方法
        按拼音排序: SortMethod:= xlPinYin 、或=1 (Use phonetic info)
        按笔画排序: SortMethod:= xlStroke、或=2
    ⑦ DataOption1 按数值或按文本排序
        DataOption1:= xlSortNormal

     

     

    展开全文
  • 学习VBA的同学经常会用到数组的排序,网上介绍的程序算法一般都是举例一维数组, 而一般实际使用时更多的需要对二维数组进行排序,本人结合大家分享的冒泡排序算法 编写了二维数组的冒泡排序实例,供大家参考。...

    学习VBA的同学经常会用到数组的排序,网上介绍的程序算法一般都是举例一维数组,

    而一般实际使用时更多的需要对二维数组进行排序,本人结合大家分享的冒泡排序算法

    编写了二维数组的冒泡排序实例,供大家参考。

    增加了升降序选择,排序列号选择,以及标题行数等实际需要使用的参数


    Private Sub test()
    Dim arr()
    Sheets("sheet1").Select
    Row = Sheets("sheet1").UsedRange.Rows.count
    col = Sheets("sheet1").UsedRange.Columns.count
    ReDim arr(1 To Row, 1 To 6)
    arr = Range("a1:F" & Row)

    arr = bubblesort(arr, 0, 2, 2)

    Range("j1:O" & Row) = arr

    End Sub

    以下为VBA二维数组冒泡排序实例
    Public Function bubblesort(ByRef snarray(), sort As Boolean, column As Integer, title As Integer)
    'sort 为升降序标记,column为需排序列,title为标题行数(不参与排序的行数)
    Dim iouter As Long
    Dim iinner As Long
    Dim ilbound As Long
    Dim iubound As Long
    Dim issort As Boolean
    Dim count As Integer
    Dim temp As Integer
    Dim itemp
    ReDim itemp(1, LBound(snarray, 2) To UBound(snarray, 2))
    Dim SORTED As Integer
    lastindex = 0
    tlbound = LBound(snarray, 2)
    tubound = UBound(snarray, 2)
    ilbound = LBound(snarray) + title
    iubound = UBound(snarray)
    SORTED = iubound - iouter - 1
    Select Case sort
    Case 0 '参数为0时升序
    For iouter = ilbound To iubound - 1
            issort = True

        For iinner = ilbound To SORTED 'iubound - iouter - 1
            If snarray(iinner, column) > snarray(iinner + 1, column) Then
                
                For temp = tlbound To tubound '数组整行数据交换
                itemp(1, temp) = snarray(iinner, temp)
                snarray(iinner, temp) = snarray(iinner + 1, temp)
                snarray(iinner + 1, temp) = itemp(1, temp)
                Next temp
                
                issort = False  '标记是否有排序动作
                count = count + 1   '记录排序次数,可删除
                lastindex = iinner  '记录最后排序位置
            End If

           Next iinner
           
           If issort = True Then Exit For   '如果没有排序动作则为全部排序完成,跳出循环,排序结束
           SORTED = lastindex   '接下来的循环只到最后排序位置

    Next iouter

    Case 1 '参数为1时降序
    For iouter = ilbound To iubound - 1
            issort = True

        For iinner = ilbound To SORTED 'iubound - iouter - 1
            If snarray(iinner, column) < snarray(iinner + 1, column) Then
                
                For temp = tlbound To tubound '数组整行数据交换
                itemp(1, temp) = snarray(iinner, temp)
                snarray(iinner, temp) = snarray(iinner + 1, temp)
                snarray(iinner + 1, temp) = itemp(1, temp)
                Next temp
                
                issort = False  '标记是否有排序动作
                count = count + 1   '记录排序次数,可删除
                lastindex = iinner  '记录最后排序位置
            End If

           Next iinner
           
           If issort = True Then Exit For   '如果没有排序动作则为全部排序完成,跳出循环,排序结束
           SORTED = lastindex   '接下来的循环只到最后排序位置

    Next iouter

    End Select

    Sheets(1).Range("I1") = count 
    bubblesort = snarray
    End Function

     

    展开全文
  • Excel VBA技巧实例手册

    2016-07-28 22:29:39
    第1篇 ExcelVBA基础 第1章 了解Excel宏 1.1 创建宏 技巧001显示“开发工具”选项卡 技巧002录制第一个宏 技巧003在VBE中创建宏 1.2 管理宏 技巧004运行宏 技巧005编辑宏 技巧006保存宏 技巧007设置宏的安全性 第2...
  • VBA脚本,对比两个Excel数据是否一致,把不同两个Excel中的不同数据标红;请按ALT+F11查看代码;
  • CATIA VBA实用程序.rar

    2020-08-02 19:53:23
    本文件主要介绍使用VBA程序对CATIA数模(*.CATPart、*.CATProduct、*.CATDrawing)进行自动化处理,旨在提高工作效率、改进数模质量和减少重复劳动,例如: 1) 零件设计程序组Part.catvba:全部适应+等轴测图、...
  • Excel VBA多关键字数据排序

    千次阅读 2020-02-21 19:12:21
    关注微信公众号:VBA168 每天更新Excel VBA经典代码,祝你工作和学习更轻松! 使用Range对象的Sort方法对区域进行排序时,同时最多只能指定3个关键字,当需要按照超过3个关键字对区域进行排序时,可以通过多次执行...

    关注微信公众号:VBA168
    每天更新Excel VBA经典代码,祝你工作和学习更轻松!

    使用Range对象的Sort方法对区域进行排序时,同时最多只能指定3个关键字,当需要按照超过3个关键字对区域进行排序时,可以通过多次执行Sort方法实现。需要注意的是,在排序时应按照各关键字的倒叙顺序。例如,如果按照A→B→C→D的关键字顺序进行排序,则应按D→C→B→A的顺序执行Sort方法。

    在这里插入图片描述
    图1 带排序数据

    如图1所示数据表中,需要按"总成绩"、“基础知识”、"教育学"和"心理学"的成绩降序排列,实例代码如下。

    Sub SortByKeysA()
         With Range("A1")
             .Sort Key1:="心理学", order1:=xlDescending, Header:=xlYes
             .Sort Key1:="教育学", order1:=xlDescending, Header:=xlYes
             .Sort Key1:="基础知识", order1:=xlDescending, Header:=xlYes
             .Sort Key1:="总成绩", order1:=xlDescending, Header:=xlYes
         End With
     End Sub
    

    运行以上过程,结果如图2所示。在这里插入图片描述
    图2 数据排序结果​

    使用Range对象的Sort方法对区域进行超过3个关键字排序时,需要多次执行Sort方法,而通过Worksheet对象的Sort方法则可以一次完成。如下示例代码实现与上面示例代码相同的排序功能。

    Sub MoreKeySort()
         With ActiveSheet.Sort.SortFields
             .Clear
             .Add Key:=Range("G1"), SortOn:=xlSortOnValues, Order:=xlDescending
             .Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlDescending
             .Add Key:=Range("C1"), SortOn:=xlSortOnValues, Order:=xlDescending
             .Add Key:=Range("D1"), SortOn:=xlSortOnValues, Order:=xlDescending
         End With
         With ActiveSheet.Sort
             .SetRange Range("A1").CurrentRegion
             .Header = xlYes
             .Apply
         End With
     End Sub
    

    第3行代码清除工作表所有的SortFields对象。

    第4~7行分别在Sort对象中添加SortFields对象。SortFields对象的Add方法创建新的排序字段,并返回SortFields对象,其语法格式如下。

    Add(Key, SortOn, Order, CustomOrder,  DataOption)
    

    该方法的各参数分别对应于Range对象Sort方法的参数。

    第10行代码指定Sort对象的排序区域。

    第11行代码指定排序区域包含标题。

    第12行代码应用工作表排序。

    展开全文
  • Access vba实例

    2021-05-30 22:56:00
    Locationrs.Open strSQL, CurrentProject.AccessConnection, adOpenKeyset If Locationrs.EOF Then 'MsgBox "请检查排序配置表!" Else Dim count3 As Integer Dim laststr3 As String laststr3 = "999999)" count3 =...
  • VBA代码实例---批量新建工作表模板

    万次阅读 2017-04-19 09:59:41
    下面写一个VBA,希望能达成如下功能: 1、转移性好,可以直接复制使用; 2、不限制重复,并且以此排序; 3、批量新建工作表; ¤操作步骤¤ 第一步:打开工作表,并把需要新建的工作表名字放在第一列,并且A1...
  • vba 下拉列表 排序We’re going to make a simple sort drop down with two options using form_with, a rails form helper. Before we get started, what exactly is form_with and why is it useful? Prior to ...
  • Excel VBA字典与数组精讲,供Excel高级开发者和爱好者学习使用。
  • 随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解决方案中,我会尽可能的把经常用到的实例多多讲解给大家,让大家对于字典的理解更加深入.虽然这块内容利用其它方案都...
  • VBA 应用实例索引

    2013-01-01 23:21:39
    VBA 应用实例索引   51VBA首页   常见字典用法集锦及代码详解   VBA排序的10种方法(冒泡,选择等)excel vba实用技巧大全下载Application对象帮助资料(Excel2007)
  • 本文件主要介绍使用VBA程序对CATIA数模(*.CATPart、*.CATProduct、*.CATDrawing)进行自动化处理,旨在提高工作效率、改进数模质量和减少重复劳动,例如: 1) 零件设计程序组Part.catvba:全部适应+等轴测图、...
  • VBA代码实例---一个工作表拆分为N个工作表

    万次阅读 多人点赞 2017-04-18 22:53:29
    ¤实例¤ 新建工作表,把员工信息复制到对应的以部门命名的工作表中。 ¤实现代码¤   Option Explicit Sub 拆分工作表() Application.DisplayAlerts = False '不显示错误提示框 Application...
  • VBA与数据库

    2015-11-19 18:07:38
    实例3-15 将查询结果进行排序(ORDER BY) 68 •实例3-16 进行复杂条件的查询(WHERE) 69 •实例3-17 利用合计函数进行查询(查询最大值和最小值) 70 •实例3-18 利用合计函数进行查询(查询合计值和平均值) 71 ...
  • 原标题:Excel vba 实例(16) - 按指定字段分类批量提取内容今天分享的一个实例是:按指定字段分类批量提取内容。问题描述这个是之前帮一个网友朋友解决的问题,可能其他朋友也会有相同的需求。也不知道概况的是否...
  • 本文件主要介绍使用VBA程序对CATIA数模(*.CATPart、*.CATProduct、*.CATDrawing)进行自动化处理,旨在提高工作效率、改进数模质量和减少重复劳动,例如: 1) 零件设计程序组Part.catvba:全部适应+等轴测图、...
  • //原始数组是这样的,希望能够按照第二维中的run_date升序或者降序进行排序: 2 $arr=array( 3 0=>array( 4 'run_date'=>'2017-11-21', 5 'count'=>'5' 6 ...
  • 本书以AutoCAD 2005中文版为开发平台,通过73个精彩的编程实例,向读者展示了AutoCAD VBA开发的高级技术。 1图书信息 中文名:AutoCAD VBA二次开发教程 作者:张帆 主编 郑立楷 卢择临 王成煌 编著 ISBN:...
  • 内容简介 《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA来操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。  全书共11章。第1~6章是利用Excel VBA操作Access数据库的实例...
  • 单元格选择技巧与选区统计、单元格数据处理技巧、条件格式及数据突现方式、排序、数据筛选、处理图形与艺术字、处理图表中的技巧、控制工作表、多工作表操作、工作表页面设置与打印、工作簿安全处理、文件与目录、...
  • ,也要判断为0的科目,这门科目是否有绩点不为0的情况,我想的办法是,将科目按照名称排好序,再把绩点作为关键字升序排序,这样在两门科目交界的地方,前一门科目对应的绩点,就是这门科目所取得的最高绩点,如果这...
  • excel表中需要多列需要填充公式,但是需要填充的表有几个、行记录数总变...调用的Sub是一个应用实例。 使用前建议用录制宏获得需要填充的公式。 本人在一个测试用例excel-word转换简易工具中应用这个实现记录完整填充。
  • 对每一道试题的参数和题干部分,可直接在Word环境中进行增、删、改、排序等操作,并可随时检测是否有重复试题出现。为醒目起见,系统可自动将试题和答案的参数涂上不同颜色。 (二)信息统计 统计整个题库中各章、...
  • 字典与集合的比较 字典的用法和特点 字典的实例代码
  • 单元格选择技巧与选区统计、单元格数据处理技巧、条件格式及数据突现方式、排序、数据筛选、处理图形与艺术字、处理图表中的技巧、控制工作表、多工作表操作、工作表页面设置与打印、工作簿安全处理、文件与目录、...
  • Excel VBA程序的编写 摘要:本文通过代码演示,介绍如何从Active Directory中检索信息并将信息显示在带格式的Excel工作表中。 (注:本文摘自Microsoft Corporation 技术人员Greg Stemp的文章,稍作修改。在...
  • 各种Excel VBA的命令

    2019-06-26 21:32:00
    当计算工作簿中的任何工作表时,本示例对第一张工作表的 A1:A100 区域进行排序  。  'Private Sub Workbook_SheetCalculate(ByVal Sh As Object)  With Worksheets(1)  .Range("a1:a100").Sort Key1:=.Range("a1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 776
精华内容 310
关键字:

vba排序实例