精华内容
下载资源
问答
  • VBA 排序Sort说明

    千次阅读 2020-06-18 09:29:47
    Sub 排序Sort() Sheet3.Range("A1:CN6").Sort Key1:=Range("N1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=n + 1, MatchCase:=True '↑↑↑↑↑↑↑↑....以上为实际操作时的代码写法,特别注意...
    花了点时间整明白Sort这个玩意,留着备用;
    
    Sub 排序之Sort()
    
    Sheet3.Range("A1:CN6").Sort Key1:=Range("N1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=n + 1, MatchCase:=True
    
    '↑↑↑↑↑↑↑↑....以上为实际操作时的代码写法,特别注意Sort key1中间的空格必须要有....↑↑↑↑↑↑↑↑
    
    '=========================================================================================================================================================================================================================>
    
    '↓↓↓↓↓↓↓↓....以下为便于说明,方便查看....↓↓↓↓↓↓↓↓
    
        语法:expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)
    
        'expression 必须。一个表示 Range 对象的变量
    
        With Sheet3.Range("A1:CN6")
    
            .Sort Key1:=Sheet3.Range("N1") '..........第一排序关键字。
    
            .Sort Order1:=xlAscending '...............第一关键字排序方式xlAscending(或1)=升序,xlDescending(或2)=降序。
            
            .Sort Key2:=Range("F1") '.................第二关键字。
    
            .Sort Type:=xlChart '.....................指定要排序的元素。
    
            .Sort order2:=xlAscending '...............第二关键字排序方式xlAscending(或1)=升序,xlDescending(或2)=降序。
    
            .Sort key3:=Sheet3.Range("B1") '..........第三关键字。
    
            .Sort order3:=xlAscending '...............第三关键字排序方式xlAscending(或1)=升序,xlDescending(或2)=降序。
    
            .Sort Header:=xlGuess '...................指定第一行是否包含标题。xlGuess(或0)=工作表自己判断是否有标题,xlYes(或1)=强制第一行为列标题(不参与排序),xlNo(或2)=强制没有列标题(全部参与排序)
    
            .Sort OrderCustom:=n + 1 '................指定在自定义排序次序列表中的基于一的整数偏移(例:同一列中有ABCD,可以指定按DCBA或CDAB自定义排序,n变量可以是数组,也可以是单元格区域)
            
            .Sort MatchCase:=True '...................设置为True以执行区分大小写的排序, 设置为 False 以执行不区分大小写的排序; 否则为False 。不能用于数据透视表。
    
            .Sort Orientation:=xlSortColumns '........指定是应按行还是按列进行排序。 xlSortColumns(或1)按列排序。 xlSortRows(或2)=按行排序 。
            
            .Sort SortMethod:=xlPinYin '..............指定排序方法。xlPinYin(或1)=按字符的汉语拼音顺序排序,xlStroke()=按每个字符的笔划数排序。
    
            .Sort dataoption1:=xlSortNormal '.........指定如何对_Key1_中指定的范围内的文本进行排序;不适用于数据透视表排序。xlSortNormal(或0)=分别对数字和文本数据进行排序(默认值),xlSortTextAsNumbers(或1)=将文本作为数字型数据进行排序。
    
            .Sort dataoption2:=xlSortNormal '.........指定如何对_Key2_中指定的范围内的文本进行排序;不适用于数据透视表排序。xlSortNormal(或0)=分别对数字和文本数据进行排序(默认值),xlSortTextAsNumbers(或1)=将文本作为数字型数据进行排序。
    
            .Sort dataoption3:=xlSortNormal '.........指定如何对_Key3_中指定的范围内的文本进行排序;不适用于数据透视表排序。xlSortNormal(或0)=分别对数字和文本数据进行排序(默认值),xlSortTextAsNumbers(或1)=将文本作为数字型数据进行排序。
    
        End With
    
        '******************************************* 关于第四个参数 Type 对应值的说明 *******************************************
        
            'xlChart........................(或-4109) = 图表
            'xlDialogSheet..................(或-4116) = 对话框工作表
            'xlExcel4IntlMacroSheet.........(或4)     = Excel 版本 4 国际宏工作表
            'xlExcel4MacroSheet.............(或3)     = Excel 版本 4 宏工作表
            'xlWorksheet....................(或-4167) = 工作表Worksheet
    
    End Sub
    展开全文
  • 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

     

     

    展开全文
  • Excel VBA数据排序

    2020-12-15 01:01:54
    关注微信公众号:VBA168 每天更新Excel VBA经典代码,祝你工作和学习更轻松! 在如图1所示数据列表中,需要按总成绩从高到低...Range对象的Sort方法对区域进行排序,其语法格式如下。 Sort(Key1, Order1, Key2, Type, O
  • VBA排序的十种算法.pdf

    2020-08-10 03:48:24
    在使用 VBA进行写程序时 经常会做排序 下面将会给出一些常用的排序算法的实现 方便 大家写程序参考若代码中出现了错误欢迎高手指正 主要算法有 1冒泡排序 Bubble sort 2选择排序 Selection sort 3插入排序 Insertion...
  • 数组方法 sort() 排序错乱问题

    千次阅读 2020-10-10 14:26:37
    在JavaScript中,数组使用sort()后发现有排序不正确的情况,如下: let arr = [1, 2, 3, 10, 20, 30] arr.sort() console.log(arr) // [1, 10, 2, 20, 3, 30] 二、原因 其实,sort方法会调用每个数组元素的...

    一、问题

    在JavaScript中,数组使用sort()后发现有排序不正确的情况,如下:

    let arr = [1, 2, 3, 10, 20, 30]
    arr.sort()
    console.log(arr) // [1, 10, 2, 20, 3, 30]

    二、原因

    其实,sort方法会调用每个数组元素的toString方法得到字符串,然后再根据Unicode编码对得到的字符串进行排序。

    // toString后
    ['1', '2', '3', '10', '20', '30']
    
    // 对应的Unicode编码
    ['49', '50', '51', '49', '50', '51']
    
    // 排序
    ['49', '49', '50', '50', '51', '51']
    
    // 对应数组元素
    [1, 10, 2, 20, 3, 30]

    三、解决办法 

    显然,这种结果不是我们想要的,这时,sort()方法的参数就起到了作用,我们把这个参数叫做比较函数

    let arr = [1, 2, 3, 10, 20, 30]
    
    //比较函数—升序
    let compare = (x, y) => {
        if (x < y) {
            return -1;
        } else if (x > y) {
            return 1;
        } else {
            return 0;
        }
    }
    console.log(arr.sort(compare)) // [1, 2, 3, 10, 20, 30]
    
    //比较函数—降序
    let compare = (x, y) => {
        if (x < y) {
            return 1;
        } else if (x > y) {
            return -1;
        } else {
            return 0;
        }
    }
    console.log(arr.sort(compare)) // [30, 20, 10, 3, 2, 1]
    

    可以简化为以下常用方法

    let arr = [1, 2, 3, 10, 20, 30]
    
    //升序
    arr.sort((a, b) => {
        return a - b;
    })
    
    //降序
    arr.sort((a, b) => {
        return b - a;
    });

     

    文章每周持续更新,可以微信搜索「 前端大集锦 」第一时间阅读,回复【视频】【书籍】领取200G视频资料和30本PDF书籍资料

     

    展开全文
  • 1. vba冒泡排序 Option Explicit Sub SelectionSort() Dim arr, i, j, temp arr = Array(1, 9, 10, 5, 4) PrintArr (arr) For i = LBound(arr) To UBound(arr) - 1 For j = LBound(arr) To UBound(arr) - 1 ...

    1. vba冒泡排序

    Option Explicit
    
    Sub SelectionSort()
        Dim arr, i, j, temp
        arr = Array(1, 9, 10, 5, 4)
        PrintArr (arr)
        For i = LBound(arr) To UBound(arr) - 1
            For j = LBound(arr) To UBound(arr) - 1 - i
                If arr(j) > arr(j + 1) Then
                    temp = arr(j) '小的放在前面,大的放到后面
                    arr(j) = arr(j + 1)
                    arr(j + 1) = temp
                End If
            Next j
            
        Next
        PrintArr (arr)
    End Sub
    
    
    Sub PrintArr(arr)
        Dim i
        Debug.Print ("=========================")
        For i = LBound(arr) To UBound(arr)
            Debug.Print arr(i)
        Next
    End Sub
    

    2. vba 选择排序

    Option Explicit
    
    Sub SelectionSort()
        Dim arr, i, j, k, temp
        arr = Array(1, 9, 10, 5, 4)
        PrintArr (arr)
        For i = LBound(arr) To UBound(arr)
            k = i
            For j = k + 1 To UBound(arr)
                If arr(j) < arr(k) Then
                    k = j ' 记下较小值的位置
                End If
            Next j
            
            If i <> k Then
                temp = arr(i)
                arr(i) = arr(k)
                arr(k) = temp
            End If
        Next
        PrintArr (arr)
    End Sub
    
    
    Sub PrintArr(arr)
        Dim i
        Debug.Print ("=========================")
        For i = LBound(arr) To UBound(arr)
            Debug.Print arr(i)
        Next
    End Sub
    

     

    展开全文
  • VBA数组的排序

    2021-09-13 16:12:32
    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放...
  • JS中sort()方法的用法,参数以及排序原理 sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。 语法:arrayObject.sort(sortby);参数sortby可选。规定排序顺序。必须是函数。 ...
  • Excel VBA自定义序列排序

    千次阅读 2020-02-22 19:52:09
    图1 待排序数据集 在图1中所示的数据集中,如果希望按单元格区域E2:E6所列序列进行排序,需要先使用AddCustomList方法为应用程序添加自定义序列,示例代码如下。 Sub SortByLists() Dim avntList As Variant, ...
  • vba-Sort 函数对工作表排序的方法

    千次阅读 2019-02-21 13:32:00
    来源:... 360doc@途之人 Range("待排序数据区域").Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orient...
  • VBA自定义排序

    2019-10-22 09:03:18
    EXCEL自定义排序最多只能有255个值,超过了就不能用自定义序列了,使用以下方法 求助excelhome论坛得出的答案 Sub 自定义排序() Application.ScreenUpdating = False '排序标准 Dim d As Object Set d = ...
  • 数字排序的方法有很多,最简单的方式可能就是下面两种方法了。 =SMALL($G29:29:29:G37,1*ROW(A1)-1+COLUMN(A1)) =SMALL(G29:G37,ROW(A1:A9)) 这两行代码虽然都是用了SMALL函数,原理也是一样的,但是实用性还是有很...
  • 快速排序快速实现三向切分 快速实现 Sub debugTest() Dim a() As Variant a = Array(6, 2, 5, 3, 7, 4, 6) sort a Debug.Print 1 End Sub Sub sort(a() As Variant) doSort a, LBound(a), UBound(a) End...
  • vba 实现桶排序

    2020-12-26 22:22:12
    排序PriorityQueue桶排序排序对数据的要求非常严格;且最好是能够轻松切分成均匀块。 PriorityQueue 由优先队列改写,这里是为了方便演示,实际操作中,不允许破环优先队列内部 ' 优先队列 Private pq() As ...
  • 使用vba实现excel 列的快速排序

    千次阅读 2019-01-10 11:39:51
    Sub test2()  Dim r%, i%  With Worksheets("sheet2")  r = .Cells(.Rows.Count, 1).End(xlUp).Row  .Sort.SortFields.Clear  .Sort.SortFields.Add Key:=.Range...), SortOn:=xlSortOnValues, Orde...
  • VBA排序算法

    千次阅读 2015-07-22 18:33:28
    1、(冒泡排序)Bubble sort 2、(选择排序)Selection sort 3、(插入排序)Insertion sort 4、(快速排序)Quick sort 5、(合并排序)Merge sort 6、(堆排序)Heap sort 7、(组合排序)Comb Sort 8、...
  • Excel VBA多关键字数据排序

    千次阅读 2020-02-21 19:12:21
    使用Range对象的Sort方法对区域进行排序时,同时最多只能指定3个关键字,当需要按照超过3个关键字对区域进行排序时,可以通过多次执行Sort方法实现。需要注意的是,在排序时应按照各关键字的倒叙顺序。例如,如果...
  • Range.Sort: VBA 内置的排序方法,15个参数。 (Key1,Order1,Type,Key2,Order2,Key3,Order3,Header,OrderCustom,MatchCase,Orientation,SortMethod,DataOption1,DataOption2,DataOption3) Ke...
  • 现在希望能够将该表数据以C列(科室)按照“外妇科l手术室l内儿科l西医科l中医科l耳鼻喉科I放射科l检验科l超室|口腔科l针灸科I西药房l中药房l收费室J疾控科l合管办|后勤科”的依次顺序进行排序,如何利用VBA实 ...
  • 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...
  • Excel VBA一行代码搞定分组排序

    千次阅读 2019-12-08 19:14:56
    最近很多小伙伴都被分组排序所困扰,Excel没有现成的分组排序功能,想要这功能基本都是靠录制宏.但是一旦录制宏,你就可以看到一长串不知道用不用得上,又不敢随便删除的代码 ...SORT 实际上只需要一个...
  • vba 实现冒泡排序

    2020-12-01 17:23:57
    Sub main() Dim a() a = Array(1, 3, 2, 5, ...' 冒泡排序 Sub sort(a) Dim i As Integer Dim j As Integer If Not VBA.IsArray(a) Then Exit Sub For i = LBound(a) To UBound(a) For j = LBound(a) To U
  • ###### 这里的FASLE是最迟到最早的邮件排序VBA刚好跟这里相反 $getItem.sort("[ReceivedTime]",$false); $mail = $getItem[$getItem.Count]; Write-Host $mail.subject $xlOutlook = $null; ...
  • vba excel排序 Excel VBA单击“形状以对列进行排序” (Excel VBA Click Shape to Sort Column)People are lazy! Shocking, I know, but who wants to click twice in Excel, if you can do the same thing by only ...
  • VBA研究】排序编程代码

    千次阅读 2015-10-29 15:11:04
    通过录制宏可以很容易得到(我学习VBA的方法基本就是查资料、录制宏),例如2003版可以得到如下排序语句: Rows("1:1500").Select Selection.Sort key1:=Range("L2"), Order1:=xlAscending, Header:=xlGuess, _
  • VBA中实现数组排序的多种方法

    万次阅读 2015-08-25 09:40:59
    VBA里面没有现成的Sort方法可以使用,VBA里面要对数组进行排序,现有的通常做法: 1,通过单元格赋值以后利用工作表里的Sort方法进行排序, 2,通过SQL实现,也需要调用单元格区域存放数据, 3,直接写循环语句...
  • VBA中的数组排序

    2011-10-19 23:12:00
    在Excel中没有提供直接的方法或函数... 这里转载了Using a Visual Basic Macro to Sort Arrays in Microsoft Excel中给出的使用VBA进行数组排序的两种方法,分别采用的排序算法为:选择排序和冒泡排序。 Method 1:...
  • VBA排序

    2018-08-13 16:07:00
    EXCEL文件自动排序,D1是排序的关键字段. Private Sub Worksheet_Change(ByVal Target As Range) '排序 ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear ActiveWorkbook.ActiveSheet.UsedRange.Sort _ key1:=...

空空如也

空空如也

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

vba的sort排序