Excel VBA调用Excel函数示例 您所在的位置:网站首页 数组求和代码怎么写 Excel VBA调用Excel函数示例

Excel VBA调用Excel函数示例

2024-07-01 09:25| 来源: 网络整理| 查看: 265

一、关于sumif()函数的用法说明及用途。

根据指定条件对若干单元格求和。

语法

SUMIF(range,criteria,sum_range)

Range    为用于条件判断的单元格区域。

Criteria    为确定哪些单元格将被相加求和的条件,其形式可以为数字、表达式或文本。例如,条件可以表示为 32、"32"、">32" 或 "apples"。

Sum_range    是需要求和的实际单元格。

说明

只有在区域中相应的单元格符合条件的情况下,sum_range 中的单元格才求和。

如果忽略了 sum_range,则对区域中的单元格求和。

Microsoft Excel 还提供了其他一些函数,它们可根据条件来分析数据。例如,如果要计算单元格区域内某个文本字符串或数字出现的次数,则可使用 COUNTIF 函数。如果要让公式根据某一条件返回两个数值中的某一值(例如,根据指定销售额返回销售红利),则可使用 IF 函数。

以上是从帮助文件里复制出来的,以前没有好好看到这些,以为没什么用处,但现在看来里面真是遍地黄金甲啊!!

效果截图如下:

image

示例解释如下:把属性值(A列)中大于等于200000的(这是条件)对应单元格(B列)(这是实际进行求和的区域)进行求和。

这个函数有什么用处呢?尤其是在学生成绩处理过程中

想来想去,也只能是指把它归为可以进行条件求各而已。

image

二、在VBA中如何实现?

其实可以用在以下情况中,比如可以统计、计算每个人的工作量,而且可以直接填到指定单元格内。如果想在VBA中实现的话,那就需要完成以下两步:

①获取每个人的姓名,存入数组中。这里有个问题,可不是在数组定义中指定常量?②根据数组列表中每个人姓名,以此为条件,计算每个人的工作量。这样就不用要求必须提前排好序,即使是乱序也不要紧了。

下面就实现这个功能吧。以统计各任课教师的工作量为例,样表如下:

image

由上表明显可以看出,B列中有重复列存在,处理过的样表如下:

image

源程序如下:

Option Base 1Sub 统计工作量()    '建立验证表,删除重复行,并获取教师姓名,同时也获得了教师列表。    Application.DisplayAlerts = False    Worksheets("sheet1").Activate    Worksheets("sheet1").Copy before:=Worksheets("sheet1")    ActiveSheet.Name = "验证"    'ActiveSheet.Delete    Dim R As Integer    Dim i As Integer    R = Range("B65536").End(xlUp).Row    For i = R To 1 Step -1        If Application.WorksheetFunction.CountIf(Range(Cells(1, 2), Cells(R, 2)), Cells(i, 2)) > 1 Then '充分利用Countif函数的功能:统计在指定区域内符合条件的个数,据此:若符合cells(i,2)的单元格个数出现了2个以上,则该行一定有重复行,那么即可把该行删掉.            Range(Cells(i, 2), Cells(i, 2)).EntireRow.Delete        End If    Next i    R = Range("B65536").End(xlUp).Row    Dim xm() As String '如果写成Dim xm(R) As String,则会提示下标超界,但利用ReDim却可以写入变量。这个问题终于解决了。    Dim gzl() As Double '建立工作量数组,存储每位教师的最终工作量。    ReDim xm(R)    ReDim gzl(R)    For i = 1 To R        xm(i) = Cells(i + 1, 2).Value        Debug.Print xm(i)    Next i    Worksheets("sheet1").Activate    For i = 1 To R        gzl(i) = Application.WorksheetFunction.SumIf(Range(Cells(2, 2), Cells(79, 2)), xm(i), Range(Cells(2, 3), Cells(79, 3)))        Debug.Print gzl(i)    Next i    Worksheets("验证").Activate    For i = 1 To R        Cells(i + 1, 4).Value = gzl(i)    Next i    Cells(1, 4).Value = "工作量合计"End Sub



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有