精华内容
下载资源
问答
  • 自定义查找最大值函数findMax(),功能:查找给定区域内的最大值(按字典排序,数字小于字母,大写字母小于小写字母)代码:Function findMax(ByVal rng As Range) '求最大值 Dim max As Variant max = rng.Cells(1)....

    自定义查找最大值函数findMax(),功能:查找给定区域内的最大值(按字典排序,数字小于字母,大写字母小于小写字母)



    代码:

    Function findMax(ByVal rng As Range)
    '求最大值
    Dim max As Variant
    max = rng.Cells(1).Value
    
    For Each ce In rng
        If ce.Value > max Then
        max = ce.Value
        End If
    Next
    findMax = max
    End Function

    局限性:

    和Excel自带的Max()函数相比,运算速度明显偏慢。但是,Excel自带的max()只能返回一组数字中的最大值,而自定义的findMax函数不限制单元格内的数据类型。

    展开全文
  • 朋友们好,今日讲VBA代码解决方案的第50讲:VBA中求最大值、最小值的.和上节的内容一致,在VBA中我们可以利用的函数不如EXCEL中多,但是,我们可以借助于EXCEL的函数,来解决我们面临的问题。在VBA中虽然没有内置的...

    ca230eb647a39aab5fa67b3a30995b72.png

    朋友们好,今日讲VBA代码解决方案的第50讲:VBA中求最大值、最小值的.和上节的内容一致,在VBA中我们可以利用的函数不如EXCEL中多,但是,我们可以借助于EXCEL的函数,来解决我们面临的问题。在VBA中虽然没有内置的函数可以进行最大、最小值的查找,但仍可以借助工作表Max、Min函数可以快速地在工作表区域中查找最大、最小值。

    在本节的知识点中需要注意:

    1 For Each 循环,这里就不再讲解,有不清楚的可以看看我上节的文章。

    2 WorksheetFunction 表示应用的是工作表函数

    3 MsgBox 这里是弹出对话框,告诉我们计算机算出的结果。

    4 rng.Interior.ColorIndex 是单元格颜色的设置

    这里再次看看一下EXCEL中各个颜色的值

    b61ef3d9ad709c912e38226c26453210.png

    下面我们看看代码:

    Sub Myseeks()

    Dim rng As Range

    Dim myRng As Range

    Dim k1 As Integer, k2 As Integer

    Dim mymax As Double, mymin As Double

    Set myRng = Sheets("Sheet3").Range("a1:f20")

    For Each rng In myRng

    If rng.Value = WorksheetFunction.Max(myRng) Then

    rng.Interior.ColorIndex = 3

    k1 = k1 + 1

    mymax = rng.Value

    ElseIf rng.Value = WorksheetFunction.Min(myRng) Then

    rng.Interior.ColorIndex = 5

    k2 = k2 + 1

    mymin = rng.Value

    Else

    rng.Interior.ColorIndex = 0

    End If

    Next

    MsgBox "最大值是:" & mymax & "共有 " & k1 & "个" _

    & Chr(13) & "最小值是:" & mymin & "共有 " & k2 & "个"

    End Sub代码解析:

    Myseeks过程在工作表单元格区域中查找最大、最小值,并将其所在的单元格底色分别设置为红色和蓝色。

    第2行到第5行代码声明变量类型。

    第6行代码使用关键字Set将单元格引用赋给变量myRng。

    第7行到第19行代码遍历单元格区域,使用工作表Max、Min函数判断单元格数值是否是所在区域的最大、最小值,如果是,将其所在的单元格底色设置为红色或蓝色,并保存其数值和数量。

    第20、21行代码使用消息框显示最大、最小值数值和数量。

    运行Myseeks过程后将工作表区域最大、最小值所在的单元格的底色设置为红色或蓝色并用消息框显示其数值和数量.

    下面看代码实测,代码截图:

    2dffead37f8d8205b0ee0bd47f9d9f47.png

    运行截图:

    e7c3b87b567ff37bc17dfb51703f7966.png

    今日内容回向:

    1 如何在VBA中获取最大最小值?

    2 如何计算最大最小值的个数?

    这一系列文章是根据我多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系我,及时为你提供专业的定制技术支持。

    欢迎大家到我的自媒体平台沟通交流:个人微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。

    工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。

    展开全文
  • 最近在做数据对照查找,类似vlookup的使用。最初使用的是worksheet中的cell单元格数值对应相等,返回一个结果。后来发现速度很慢。查阅资料后,发现使用数组很快。特此记录。 思路: 将数据源的两列数据对应成两个...

    最近在做数据对照查找,类似vlookup的使用。最初使用的是worksheet中的cell单元格数值对应相等,返回一个结果。后来发现速度很慢。查阅资料后,发现使用数组很快。特此记录。

    思路:

    将数据源的两列数据对应成两个数组,分别读入到数组中,再使用输入单元格的数值和数组数值对比,如果相等,则返回第二个数组的对应值。

    Sub test2()
    '合并,速度更快
    Dim i    '用于数组的索引,如果数据量很大,用int可能会溢出(int最大3w多),所以设置成variant
    Dim j As Integer
    Dim s As String
    Dim t    '用于记录运行时间'
    Application.ScreenUpdating = False    '提速用的,最后再开启'
    
    Dim Arr1    '第一列数组,用于记录比对数据库'
    Dim Arr2    '第二列数组,用于返回对应数值:如果输入值和arr1的对应起来了,返回对应的arr2'
    
    t = Timer
    i = Worksheets("desc").Range("C65535").End(xlUp).Row
    '本句为经典用法,range.end()用于返回连续选中单元格某一方向下,出现第一个空白单元格前的单元格(即不为空的最后一个单元格),返回对象为range。如果单元格本身为空,则返回空白单元格的边界单元格。'
    'end括号中为方向,xlup表示向上。本句意思是从C65535(即最最底部的单元格)向上走,第一个不同的单元格的行数。本语句也可以使用Range("C1").End(xldown).Row,前提是中间没有空格。
    
    Arr1 = Application.Transpose(Worksheets("desc").Range("C2:C" & i))
    Arr2 = Application.Transpose(Worksheets("desc").Range("I2:I" & i))
    
    'transpose是转置的意思,如果不转置,arr1,2都是二维数组(第二个维度是1 to 1)。转置后成为一维数组。
    
    i = 2   '用于找desc序号'
    j = 2   'for code in sheet1
    s = Worksheets(1).Cells(j, 2).Value
    Do
        For i = 1 To UBound(Arr1)    'ubound用于返回数组的上边界,当数组大小未知时,非常好用'
            If s = Arr1(i) Then
                Worksheets(1).Cells(j, 17).Value = Arr2(i)
                Exit For
            End If
            Next i
            If i = UBound(Arr1) Then
                Worksheets(1).Cells(i, 17) = "missing"
            End If
        j = j + 1
        s = Worksheets(1).Cells(j, 2).Value
    Loop While (s <> "")
    MsgBox "用时" & Format(Timer - t, "0.00" & "s")
    Application.ScreenUpdating = True
    
    End Sub

    相比较,处理800行的数据,使用数组方法,处理时间为1s左右,而使用worksheet的cell值比对,处理时间在200s左右。由此可见vba调用worksheet内元素是耗费时间的关键。

     

    展开全文
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧154 查找最大、最小值 12 技巧155 不重复的录入 12 技巧156 获得当月的最后一天 12 技巧157 四舍五入运算 12 157-1 极小修正法 12 157-2 调用工作表函数法 12 技巧158 使用字符串函数 12 技巧159 使用日期...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧154 查找最大、最小值 381 技巧155 不重复的录入 383 技巧156 获得当月的最后一天 385 技巧157 四舍五入运算 386 157-1 极小修正法 386 157-2 调用工作表函数法 387 技巧158 使用字符串函数 387 技巧159 ...
  • 模糊匹配,怎么也能找到一个小于查找值的最大值吧。 之所以模糊匹配仍出现N/A错误,是因为查找范围,Table_Array(第二个参数)的第一列,没有按升序进行排序。哈哈,有时候函数帮助里的细节能解决关键问题。 2....

    1. Vlookup采用模糊匹配,仍然出现N/A错误

    通常大家认为只有精确匹配,才会出现N/A错误,也就是查找不到结果;模糊匹配,怎么也能找到一个小于查找值的最大值吧。

    之所以模糊匹配仍出现N/A错误,是因为查找范围,Table_Array(第二个参数)的第一列,没有按升序进行排序。哈哈,有时候函数帮助里的细节能解决关键问题。

     

    2. 将单元格区域Range对象直接赋值给数组Array,经常出现下标越界的错误

    假设单元格区域对象 set rng=Range(A1:B5),其中A1-A5分别为1,2,3,4,5,B1-B5分别为6,7,8,9,10

    Dim Arr as Variant

    Arr=rng  '将rng赋值给Arr

    Debug.print Arr(1)  '此处将报错,因为Arr是二维的,所以此处缺少一个参数,应该为Arr(1,1)等

    Debug.print Arr(0,1)  '此处报错,因为Arr每个维度的起始Index都是1,而不是0.所以同样出错的是Arr(1,0)

    Debug.print Arr(2,5)  ‘此处报错,因为5是列号,而数组实际上只有两列(A、B两列),也就是说第一个参数是行号,第二个参数是列号,正好与Range对象是对应的。

    Debug.print Ubound(Arr)  '此处输出结果为:5,即行号的最大值,同样也是总行数。

     

    3. MSCOMCT2.OCX缺失引起的问题及处理方法

    我曾经编写了一个含VBA的Excel文件,其中使用了DTPicker控件,该文件在同事电脑上,就出现了“无法装载这些对象 因为他们不适用于这台计算机”的错误,因为DTPicker控件依赖于MSCOMCT2.OCX,

    而同事的计算机上恰好缺少这个控件,于是从我的电脑C:\WINIDOWS\SYSTEM32里把MSCOMCT2.OCX拷贝到同事电脑上,再次打开文件,还是同样的错误。

    原来简单的拷贝MSCOMCT2.OCX到system32文件夹是不够的,还要将其注册一下,直接Win键+R,运行 Regsvr32  MSCOMCT2.OCX.

    不幸的是,又出现新错误,关键词“DllRegisterServer调用失败”,这是因为当前不是管理员账户,没有权限调用DllRegisterServer,所以解决办法就是:

    程序 - 附件 - 命令提示符,在”命令提示符“上点击鼠标右键,选择”以管理员身份运行“命令,输入并运行Regsvr32  MSCOMCT2.OCX

    Bingo,成功!

    2013-07-11又遭遇新问题,同事的电脑是Windows8 64位,需要将MSCOMCT2.OCX复制到windows\syswow64文件夹下,并用Win键+X,选择“运行命令提示行(管理员)”,在出现的cmd窗口里,

    使用cd命令,切换到syswow64文件夹,然后运行Regsvr32  MSCOMCT2.OCX。

    Bingo,又成功了!

     

    转载于:https://www.cnblogs.com/Graduatedben/archive/2013/03/28/2987101.html

    展开全文
  • 函数作用:对多个用同一分隔符分隔的待查找元素,逐一在表区域首列内搜索,将返回选定单元格的相加,............72 '51.函数作用:根据个人所得税(工资)反算工资数.........73 '52.函数作用:判断表是否存在.........
  • 130.返回特定区域中最大值的地址 131.删除表格中使用范围内的所有空白单元格 132.返回数组中有多少个指定的字符串 133.返回当前工作表中引用了指定的单元的地址 134.获取Excel中字型列表 135.获取一个字符串中有多少...
  • 提供的实例包括:从数据源匹配取数的问题/部分字符地址查找/汇总问题/重复加色/统计月报/最大或最小...
  • 计算参数区域中去除最大值与最小值之再求平均,参数个数有255个(Excel2003中是1到30个)。 函数名称:hesum 函数功能与参数:左右合并再求和。将1/2类型的数字换算成1.5类型数据后再求和;若为12则按12计算,若为...
  • 计算参数区域中去除最大值与最小值之再求平均,参数个数有255个(Excel2003中是1到30个)。 函数名称:hesum 函数功能与参数:左右合并再求和。将1/2类型的数字换算成1.5类型数据后再求和;若为12则按12计算,若为1...
  • 7.5.3 求n个最大值的和 7.5.4 使用单个条件求和 7.5.5 只对负值求和 7.5.6 根据范围Difference的值求和 7.5.7 基于文本的比较结果求和 7.5.8 基于日期的比较结果求和  7.6 使用多重条件求和 7.6.1 使用AND...
  • 7.5.3 求n个最大值的和 7.5.4 使用单个条件求和 7.5.5 只对负值求和 7.5.6 根据范围Difference的值求和 7.5.7 基于文本的比较结果求和 7.5.8 基于日期的比较结果求和  7.6 使用多重条件求和 7.6.1 使用AND...
  • 2.6.2 编写为对象的属性 48 2.6.3 编写定制的方法 48 2.7 编写类模块 49 2.7.1 创建外界支持的对象 49 2.7.2 创建类模块 50 2.7.3 使用类模块 52 2.8 小 结 54 第3章 做出选择:MDB或ADP,DAO或ADO ...
  • 2.6.2 编写为对象的属性 48 2.6.3 编写定制的方法 48 2.7 编写类模块 49 2.7.1 创建外界支持的对象 49 2.7.2 创建类模块 50 2.7.3 使用类模块 52 2.8 小 结 54 第3章 做出选择:MDB或ADP,DAO或ADO 55 3.1...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体字...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    计算参数区域中去除最大值与最小值之再求平均,参数个数有255个(Excel2003中是1到30个)。 函数名称:hesum 函数功能与参数:左右合并再求和。将1/2类型的数字换算成1.5类型数据后再求和;若为12则按12计算,若为1...
  • 11.11 使用求和、平均值、计数、最小值、最大值等 261 11.12 创建报表百分比 262 11.12.1 占总量百分比 263 11.12.2 月增长率 263 11.12.3 特定项的百分比 263 11.12.4 汇总 264 11.13 使用Excel 2007...
  • 11.11 使用求和、平均值、计数、最小值、最大值等 261 11.12 创建报表百分比 262 11.12.1 占总量百分比 263 11.12.2 月增长率 263 11.12.3 特定项的百分比 263 11.12.4 汇总 264 11.13 使用Excel 2007...
  • 11.11 使用求和、平均值、计数、最小值、最大值等 261 11.12 创建报表百分比 262 11.12.1 占总量百分比 263 11.12.2 月增长率 263 11.12.3 特定项的百分比 263 11.12.4 汇总 264 11.13 使用Excel 2007...
  • 11.11 使用求和、平均值、计数、最小值、最大值等 261 11.12 创建报表百分比 262 11.12.1 占总量百分比 263 11.12.2 月增长率 263 11.12.3 特定项的百分比 263 11.12.4 汇总 264 11.13 使用Excel 2007...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  • 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体...
  • 计算参数区域中去除最大值与最小值之再求平均,参数个数有255个(Excel2003中是1到30个) hesum左右合并再求和。将1/2类型的数字换算成1.5类型数据后再求和;若为12则按12计算,若为1/2则按1.5计算 NOWW不改变的当前...
  • VBSCRIPT中文手册

    热门讨论 2010-11-12 10:13:06
    如何查找呢?单击左边的某个标题,即显示该部分中包含的项目列表。从这张列表中选择要查看的主题。当这个主题打开后,再链接到其他相关的部分就简单多了。 好了,让我们试一试,体会体会!学习几个语句,研究几种...
  • vb Script参考文档

    2009-07-28 22:13:02
    如何查找呢?单击左边的某个标题,即显示该部分中包含的项目列表。从这张列表中选择要查看的主题。当这个主题打开后,再链接到其他相关的部分就简单多了。 好了,让我们试一试,体会体会!学习几个语句,研究几种...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

vba查找最大值