精华内容
下载资源
问答
  • VBA 应用实例索引

    2013-01-01 23:21:39
    VBA 应用实例索引   51VBA首页   常见字典用法集锦及代码详解   VBA排序的10种方法(冒泡,选择等)excel vba实用技巧大全下载Application对象帮助资料(Excel2007)
    展开全文
  • 学习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代码实例---批量新建工作表模板

    千次阅读 2017-04-19 09:59:41
    下面写一个VBA,希望能达成如下功能: 1、转移性好,可以直接复制使用; 2、不限制重复,并且以此排序; 3、批量新建工作表; ¤操作步骤¤ 第一步:打开工作表,并把需要新建的工作表名字放在第一列,并且A1...

    在工作中,经常需要用到一个操作:批量生成工作表,工作表名字指定。下面写一个VBA,希望能达成如下功能:

    1、转移性好,可以直接复制使用;

    2、不限制重复,并且以此排序;

    3、批量新建工作表;

    ¤操作步骤¤

    第一步:打开工作表,并把需要新建的工作表名字放在第一列,并且A1单元格为标题;

    第二步:菜单—开发工具—VisualBasic--召唤VBE(Alt+F11/Fn+Alt+F11)

    第三步:新建模块(在工程资源管理器中右键单击,插入模块)

    第四步:把代码复制到右侧的编辑栏(这是新建过程)

    第五步:开发工具—宏--执行

    ¤主要知识点¤

    1、新建工作表,并命名;

    2、判断工作表是否存在的方式

    ¤代码实例¤


    Option Explicit
    
    Sub 批量新建工作表()
    
        Dim i As Integer
        Dim sh As Worksheet
        Dim sName As String
        
        Dim sYuan As String
        sYuan = ActiveSheet.Name
        
        '第一行为标题,所以从第二行开始,如果无标题应该i=1
        For i = 2 To Worksheets(sYuan).Range("A1").CurrentRegion.Rows.Count
        
            sName = Worksheets(sYuan).Range("A" & i).Value
            
            '判断工作表是否存在,如果不存在就新建
            On Error Resume Next
            Set sh = Worksheets(sName)    '如果工作表不存在,报错并返回非零值给Err.Number
    
            If Err.Number <> 0 Then
                Set sh = Worksheets.Add(, Worksheets(Worksheets.Count))
                sh.Name = sName
            End If
        
        Next i
    
        Worksheets(sYuan).Select
    
    End Sub
    
    展开全文
  • Part 2:解决问题逻辑过程 何为连续整数,对于排序好的整数,前后相减为1,则连续整数为2个 有一组排序好的整数(升序),前后相减,得到另外一个数组,有m个连续的1,则有m+1个连续的整数 具体实现:建立一个函数,...

    Part 1:写在前面的话

    1. 解释一下题目:一组整数1,2,3,4,6,8,9,10,是否存在4个连续整数,答案为是;是否存在5个连续整数,答案为否
    2. 应用场景:当某种现象连续出现5次,则认为异常,否则为正常现象
    3. 形象点场景:一工厂生产泡面,进行机器自动检查其重量并记录检测时间及重量数据到后台
    • 问题:假设如果连续5次重量不足,则说明有异常,需要检查生产线
    • 当然现在很多监控设备已经有自动预警功能,假设这个工厂比较low,没有这个功能
    • 只能采取定期对数据进行检查
    • 你获取了这些数据,如何发现异常?
    1. 解决方法:时间信息相当于这些重量数据的标签,根据时间前后,把其替换为连续的整数。只保留不合格重量的标签,这样就得到一组整数,回到该开始的题目
    2. 哈哈,有没有点晕?

    Part 2:解决问题逻辑过程

    1. 何为连续整数,对于排序好的整数,前后相减为1,则连续整数为2个
    2. 有一组排序好的整数(升序),前后相减,得到另外一个数组,有m个连续的1,则有m+1个连续的整数
    3. 具体实现:建立一个函数,输入参数2个。需判断的数组arr,及有多少个连续整数n,函数返回结果为“是”或者“”。具体如下
    • 初始化函数为“否”
    • 判断数组长度,小于需要判断个数n,则直接返回“
    • 设置计算器counter,并初始化为0,counter为计算相减后连续1的个数,达到n-1则返回“是”
    • 每次遇到差值不为1,则counter置为0,这样统计出来的才是连续整数的个数
    1. 要求传入函数中的数组已按照升序排序

    Part 3:代码

    Sub test()  Rem>>主程序 Rem>> arr1 = Array(1, 3, 4, 6, 8, 10, 11, 12, 16) arr2 = Array(1, 3, 4, 6, 9, 10, 11, 12, 16) arr3 = Array(2, 3, 4, 5, 6, 7, 11, 12, 16) n = 5 existsYN1 = 连续整数(arr1, n) existsYN2 = 连续整数(arr2, n) existsYN3 = 连续整数(arr3, n)End SubFunction 连续整数(arr, n)  Rem>>判断整数数组是否存在连续n个整数 Rem>>返回:是 / 否 '初始化 连续整数 = "否" '数组长度 lenA = UBound(arr) + 1 If lenA < n Then 连续整数 = "否" End If '计数器 counter = 0 For i = 0 To lenA - 2 Step 1 plusValue = arr(i + 1) - arr(i) If plusValue = 1 Then '连续整数 counter = counter + 1 If counter = n - 1 Then 连续整数 = "是" Exit For End If Else counter = 0 End If Next iEnd Function

    执行结果

    a3ea0b80c51254a68658800accc41c49.png
    展开全文
  • Part 1:逻辑过程首先对拟查找列排序从第一行开始进行循环每一行与其下面的行进行对比,直到找到不同的值,进入下一个值记录有多少个相同的值,下一个循环从那个不同的值开始向下循环直到最后一行将重复值及重复次数...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第64讲内容:从字典提取数据后,汉字的笔画和拼音排序处理.排序的方式,是我在本套书中重点介绍的内容,之前的讲解中我先后讲解了几种方法,但实际的工作中...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第64讲内容:从字典提取数据后,汉字的笔画和拼音排序处理.排序的方式,是我在本套书中重点介绍的内容,之前的讲解中我先后讲解了几种方法,但实际的工作中...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日的内容是第58讲,利用工作表函数,对字典的键进行排序,并给出对应的重复个数。对于排序,大家并不陌生,在之前的讲解中,我也讲了利用sort进行排序的方法。今日...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第64讲内容:从字典提取数据后,汉字的笔画和拼音排序处理.排序的方式,是我在本套书中重点介绍的内容,之前的讲解中我先后讲解了几种方法,但实际的工作中...
  • VBA与数据库

    2015-11-19 18:07:38
    实例3-15 将查询结果进行排序(ORDER BY) 68 •实例3-16 进行复杂条件的查询(WHERE) 69 •实例3-17 利用合计函数进行查询(查询最大值和最小值) 70 •实例3-18 利用合计函数进行查询(查询合计值和平均值) 71 ...
  • VBA挑战-源码

    2021-02-15 03:36:19
    我最初的Macro设计将数据视为未排序的数组,并使用嵌套的for循环扫描整个数组以查找每个单个值的所有实例。 该代码适用于简化的测试数据集,但事实证明,该代码运行时间非常长,并且无法处理多年库存数据的超大型...
  • Excel VBA与数据库整合应用范例精讲

    热门讨论 2011-10-29 18:48:38
    内容简介 《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA来操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。  全书共11章。第1~6章是利用Excel VBA操作Access数据库的实例...
  • 单元格选择技巧与选区统计、单元格数据处理技巧、条件格式及数据突现方式、排序、数据筛选、处理图形与艺术字、处理图表中的技巧、控制工作表、多工作表操作、工作表页面设置与打印、工作簿安全处理、文件与目录、...
  • 单元格选择技巧与选区统计、单元格数据处理技巧、条件格式及数据突现方式、排序、数据筛选、处理图形与艺术字、处理图表中的技巧、控制工作表、多工作表操作、工作表页面设置与打印、工作簿安全处理、文件与目录、...
  • 内容简介 《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA来操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。  全书共11章。第1~6章是利用Excel VBA操作Access数据库的实例...
  • CATIA VBA实用程序.rar

    2020-08-02 19:53:23
    本文件主要介绍使用VBA程序对CATIA数模(*.CATPart、*.CATProduct、*.CATDrawing)进行自动化处理,旨在提高工作效率、改进数模质量和减少重复劳动,例如: 1) 零件设计程序组Part.catvba:全部适应+等轴测图、...
  • 本书以AutoCAD 2005中文版为开发平台,通过73个精彩的编程实例,向读者展示了AutoCAD VBA开发的高级技术。 1图书信息 中文名:AutoCAD VBA二次开发教程 作者:张帆 主编 郑立楷 卢择临 王成煌 编著 ISBN:...
  • 本文件主要介绍使用VBA程序对CATIA数模(*.CATPart、*.CATProduct、*.CATDrawing)进行自动化处理,旨在提高工作效率、改进数模质量和减少重复劳动,例如: 1) 零件设计程序组Part.catvba:全部适应+等轴测图、...
  • 本文件主要介绍使用VBA程序对CATIA数模(*.CATPart、*.CATProduct、*.CATDrawing)进行自动化处理,旨在提高工作效率、改进数模质量和减少重复劳动,例如: 1) 零件设计程序组Part.catvba:全部适应+等轴测图、...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第66讲内容:从字典提取数据后,实现自定义排序.对于排序而言,我们在上节讲了乱序,是工作中经常会用到的,今日我们讲解自定义排序,什么是自定义排序呢?...
  • 随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解决方案中,我会尽可能的把经常用到的实例多多讲解给大家,让大家对于字典的理解更加深入.虽然这块内容利用其它方案都...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第67讲内容:从字典中提取数据后,实现多字段排序关于排序,我先后讲了乱序排序,自定义排序等特殊的排序方法,这些是工作中必不可少的,希望大家好好利用...
  • 随着字典讲解的深入,我们发现字典真的很神奇,在VBA代码中,给人以十分清爽的感觉,在这套数组与字典解决方案中,我会尽可能的把经常用到的实例多多讲解给大家,让大家对于字典的理解更加深入.虽然这块内容利用其它方案都...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日的内容是第58讲,利用工作表函数,对字典的键进行排序,并给出对应的重复个数。对于排序,大家并不陌生,在之前的讲解中,我也讲了利用sort进行排序的方法。今日...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第67讲内容:从字典中提取数据后,实现多字段排序关于排序,我先后讲了乱序排序,自定义排序等特殊的排序方法,这些是工作中必不可少的,希望大家好好利用...
  • 实例16 :替代 VLOOUP、SUMPRODUCT 的VBA编码-多重 Join 的使用(第7页69楼) 实例17:列出库中欠缺编号-NOT IN 的应用(第8页71楼) 实例18:用 Union 从字段不相同的两个 Access 表中筛选记录后按相似字段排序...
  • 大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第66讲内容:从字典提取数据后,实现自定义排序.对于排序而言,我们在上节讲了乱序,是工作中经常会用到的,今日我们讲解自定义排序,什么是自定义排序呢?...
  • 第66讲 从字典提取数据后,实现自定义排序大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第66讲内容:从字典提取数据后,实现自定义排序.对于排序而言,我们在上节讲了乱序,是工作中经常会用到的,今日...

空空如也

空空如也

1 2 3 4 5 6
收藏数 112
精华内容 44
关键字:

vba排序实例