用VBA编写Excel自定义的累加函数

合集下载

vba中sum多单元格应用

vba中sum多单元格应用

vba中sum多单元格应用在VBA中,要对多个单元格进行求和操作,可以使用Sum函数。

Sum函数可以接受多个参数,将这些参数对应的单元格的值相加起来。

以下是一个简单的示例代码:vba.Sub SumCells()。

Dim sumResult As Double.sumResult =Application.WorksheetFunction.Sum(Range("A1:A10"),Range("B1:B10"))。

Range("C1").Value = sumResult.End Sub.在这个示例中,我们使用了Sum函数来计算A1到A10和B1到B10这两个范围的单元格的和,并将结果赋值给C1单元格。

另外,如果要对整个列或整个行进行求和操作,可以使用类似以下的代码:vba.Sub SumEntireColumn()。

Dim sumResult As Double.sumResult =Application.WorksheetFunction.Sum(Range("A:A"))。

Range("A100").Value = sumResult.End Sub.这个示例中,我们对整个A列的单元格进行求和操作,并将结果赋值给A100单元格。

除了使用WorksheetFunction.Sum函数外,还可以直接使用Excel的Sum函数,如下所示:vba.Sub SumFormula()。

Range("A1").Formula = "=SUM(A1:A10, B1:B10)"End Sub.在这个示例中,我们将求和的公式直接写入A1单元格,Excel 会自动计算出结果。

总的来说,在VBA中对多个单元格进行求和操作,可以使用WorksheetFunction.Sum函数或者直接写入Excel的求和公式来实现。

用VBA编写Excel自定义的累加函数

用VBA编写Excel自定义的累加函数

用VBA编写Excel自定义的累加函数郑云勇云南楚雄思远投资有限公司摘要:Excel是常用的数据统计分析软件,本文介绍了用VBA编写加载宏的方法来扩展、定制Excel,以适合工程统计专业的特殊需要。

下面,讨论如何实现一个自定义的具有任意合计形如“30.2m/165.45m3”的“分子/分母”工程量统计功能的函数,由于Sum函数系统已经内置,我们要实现的函数不妨命名为uLSum和uRSum。

关键词:Excel,定制,加载宏1引言电子表格软件Microsoft Excel具有快捷方便的数据输入方式和强大的数据处理能力,是工程地质中常用的数据统计分析软件,为我们的工作带来了极大的方便。

但Excel毕竟只是一个通用的办公软件,对于工程专业中的各种特殊需求,它自然不会有专门的功能支持。

比如:采矿工程师在做每年的采掘生产计划时,通常遇到要累加掘进工程量的合计数,即“30.5/125.6”加“120.2/625.8”的合计,我们通常的做法是分步完成,先将分子之、分母之和求出来后,在填入单元格中。

或者将分子、分母分别填入两列中,分别用sum函数求和。

这样既劳神,又容易出错,特别是对大量数据进行复杂的公式计算。

如果从头编写一个独立、专门的计算程序来处理,则似有小题大作之嫌,而且还不能与Excel无缝集成。

那么有没有更好的解决办法呢?答案是肯定的,那就是定制Excel,通过编程扩展它的功能。

事实上,Excel作为Microsoft最优秀的软件之一,很早就开始提供了二次开发的接口,4.0版以前有XLM,4.0版又发布了Excel C API,5.0版则内置了VBA。

现在的Excel,除了人所共知的操作功能外,还是一个完善的软件开发平台。

它拥有完备的ActiveX Automation服务器和客户机机制,可以通过编程对其进行全方位的扩展、定制,实现各种自定义功能。

基于ActiveX Automation技术,使用C/C++等多种支持Automation的编程语言均可控制Excel,但我们最为熟悉和常用的还是内置于Excel中的VBA。

Excel高级技巧使用VBA编写自定义函数

Excel高级技巧使用VBA编写自定义函数

Excel高级技巧使用VBA编写自定义函数Excel是一款功能强大的电子表格软件,通过使用VBA(Visual Basic for Applications)编写自定义函数,可以进一步拓展Excel的功能和灵活性。

本文将介绍一些Excel高级技巧,以及如何使用VBA编写自定义函数来实现更复杂的计算和数据处理需求。

一、VBA简介VBA是一种基于Visual Basic语言的宏编程语言,用于扩展Microsoft Office套件中的各种应用程序的功能,包括Excel。

通过使用VBA,我们可以编写自己的功能代码,以实现定制化的功能。

二、使用VBA编写自定义函数的步骤1. 打开Excel,并按下ALT + F11快捷键,打开Visual Basic编辑器界面。

2. 在VBA编辑器界面中,选择插入(Insert)菜单,然后选择模块(Module)。

3. 在新建的模块中,编写自定义函数的VBA代码,例如:```vbaFunction MyFunction(ByVal num1 As Double, ByVal num2 As Double) As DoubleMyFunction = num1 * num2End Function```上述代码定义了一个名为MyFunction的自定义函数,接受两个参数num1和num2,并返回它们的乘积。

4. 保存VBA代码,并返回Excel界面。

5. 在Excel表格中的某个单元格中输入`=MyFunction(2, 3)`,按下回车键,该单元格将显示结果6,即2和3的乘积。

通过以上步骤,我们成功地使用VBA编写了一个自定义函数,并在Excel中调用并使用它。

三、自定义函数的应用示例自定义函数可以用于更复杂的计算和数据处理需求。

以下是一个实际示例,展示了如何使用VBA编写自定义函数。

假设我们有一个Excel表格,其中包含了学生的成绩信息,包括科目和分数。

我们想计算每个科目的平均分。

vba条件求和方法(一)

vba条件求和方法(一)

vba条件求和方法(一)VBA条件求和概述在VBA中,我们经常需要对一组数据进行求和计算。

有时候我们需要根据一定的条件来筛选数据,然后再进行求和。

本文将介绍几种常见的VBA条件求和的方法。

方法一:使用SUMIF函数SUMIF函数是Excel中常用的函数之一,它可以根据指定的条件来求和相应的数据。

步骤:1.创建一个新的VBA宏。

2.在宏中使用SUMIF函数并指定条件和求和区域。

Sub SumWithSumIF()Dim total As DoubleDim rangeToSum As RangeDim criteria As RangeDim sumRange As Range' 设置条件范围Set criteria = Range("A1") ' 假设条件在A1单元格上' 设置求和范围Set sumRange = Range("B1:B10") ' 假设要求和的数据在B1到B10之间' 使用SUMIF函数求和total = (sumRange, criteria, sumRange)' 输出结果MsgBox "求和结果为:" & totalEnd Sub方法二:使用For循环和条件判断如果你想要更灵活地控制条件,或者需要进行更复杂的条件计算,可以使用For循环和条件判断来实现。

步骤:1.创建一个新的VBA宏。

2.使用For循环遍历数据范围,根据条件进行判断并求和。

Sub SumWithForLoop()Dim total As DoubleDim rangeToSum As RangeDim cell As RangeSet rangeToSum = Range("B1:B10") ' 假设要求和的数据在B1到B10之间' 遍历数据范围,根据条件判断并求和For Each cell In rangeToSumIf > 0 Then ' 假设条件为大于0total = total +End IfNext cell' 输出结果MsgBox "求和结果为:" & totalEnd Sub方法三:使用AutoFilter如果你的数据是一个列表,你可以使用AutoFilter功能来筛选数据并求和。

Excel_VBA_函数使用(DOC)

Excel_VBA_函数使用(DOC)

函数的使用技巧1 调用工作表函数求和在对工作表的单元格区域进行求和计算时,使用工作表Sum函数比使用VBA代码遍历单元格进行累加求和效率要高得多,代码如下所示。

#001 Sub rngSum()#002 Dim rng As Range#003 Dim d As Double#004 Set rng = Range("A1:F7")#005 d = Application.WorksheetFunction.Sum(rng)#006 MsgBox rng.Address(0, 0) & "单元格的和为" & d#007 End Sub代码解析:rngSum过程调用工作表Sum函数对工作表的单元格区域进行求和计算。

在VBA中调用工作表函数需要在工作表函数前加上WorksheetFunction属性。

应用于Application对象的WorksheetFunction属性返回WorksheetFunction对象,作为VBA中调用工作表函数的容器,在实际应用中可省略Application对象识别符。

技巧2 查找最大、最小值在VBA中没有内置的函数可以进行最大、最小值的查找,借助工作表Max、Min函数可以快速地在工作表区域中查找最大、最小值,如下面的代码所示。

#001 Sub seeks()#002 Dim rng As Range#003 Dim myRng As Range#004 Dim k1 As Integer, k2 As Integer#005 Dim max As Double, min As Double#006 Set myRng = Sheet1.Range("A1:F30")#007 For Each rng In myRng#008 If rng.Value = WorksheetFunction.max(myRng) Then#009 rng.Interior.ColorIndex = 3#010 k1 = k1 + 1#011 max = rng.Value#012 ElseIf rng.Value = WorksheetFunction.min(myRng) Then#013 rng.Interior.ColorIndex = 5#014 k2 = k2 + 1#015 min = rng.Value#016 Else#017 rng.Interior.ColorIndex = 0#018 End If#019 Next#020 MsgBox "最大值是:" & max & "共有 " & k1 & "个" _#021 & Chr(13) & "最小值是:" & min & "共有 " & k2 & "个"#022 End Sub代码解析:seeks过程在工作表单元格区域中查找最大、最小值,并将其所在的单元格底色分别设置为红色和蓝色。

Excel高级技巧使用宏和VBA编程实现数据处理和汇总

Excel高级技巧使用宏和VBA编程实现数据处理和汇总

Excel高级技巧使用宏和VBA编程实现数据处理和汇总Excel高级技巧:使用宏和VBA编程实现数据处理和汇总Excel是一款功能强大、灵活多变的电子表格软件,广泛应用于数据处理、汇总和分析等领域。

在日常工作中,我们经常需要处理大量的数据,繁琐的操作可能会消耗大量的时间和精力。

而Excel的宏和VBA编程技巧能够帮助我们自动化处理数据,提高工作效率。

本文将介绍如何使用宏和VBA编程实现数据处理和汇总,以及一些实用技巧。

一、宏的基本概念和使用方法Excel宏是指一系列预先录制的操作步骤,可以保存起来并重复运行,从而自动执行这些操作。

通过录制宏,我们可以将重复性的操作转化为简单的命令,大大减少了手动输入的工作量。

下面是如何录制宏的基本步骤:首先,打开Excel并选择“开发工具”选项卡(如果找不到该选项卡,可以在“选项”中启用它);然后,点击“宏”按钮,选择“录制新宏”;在弹出的窗口中,为宏命名,并选择保存宏的位置(建议选择“个人宏工作簿”,这样宏可以在任何工作簿中使用);开始录制宏,并按照需要执行各种操作;完成操作后,停止录制宏;现在,可以通过按下快捷键、添加按钮或者右键菜单等方式运行刚才录制的宏。

二、VBA编程实现高级数据处理除了录制宏,我们还可以使用VBA编程语言对Excel进行更加灵活和复杂的自定义操作。

下面是一个使用VBA编程实现数据处理和汇总的示例:首先,按下Alt+F11,打开Visual Basic for Applications(VBA)编辑器;选择插入菜单中的模块,在弹出的代码窗口中编写VBA代码;以下是一个简单的VBA代码实例,用于对数据进行汇总和筛选:```Sub DataProcessing()'定义变量Dim rng As RangeDim cell As RangeDim sumValue As Double'设置处理范围Set rng = Range("A1:A100")'初始化累加值sumValue = 0'循环处理每个单元格For Each cell In rng'判断条件,累加数值If cell.Value > 0 ThensumValue = sumValue + cell.ValueEnd IfNext cell'在指定位置输出结果Range("B1").Value = sumValueEnd Sub```以上代码首先定义了一个变量rng,用于指定处理数据的范围。

Excel高级技巧利用VBA编写自定义函数

Excel高级技巧利用VBA编写自定义函数

Excel高级技巧利用VBA编写自定义函数Excel作为一款强大的数据处理工具,大大提高了数据分析和处理的效率。

除了常规的函数和运算符,Excel还提供了一种利用VBA (Visual Basic for Applications)编写自定义函数的功能,使得用户可以根据自身需求扩展Excel的功能。

本文将介绍Excel中编写自定义函数的高级技巧,帮助读者更好地利用VBA进行自定义函数编写。

一、自定义函数的基本概念在Excel中,自定义函数是用户自己编写的用于扩展Excel功能的函数,通过VBA可以将这些函数封装成模块,并在需要的时候调用。

相较于常规的函数和公式,自定义函数具有更大的灵活性和扩展性,可以满足更复杂的计算和数据处理需求。

二、利用VBA编写自定义函数的基本步骤1. 打开Excel,按下ALT+F11进入VBA编辑器。

2. 在VBA编辑器中,插入新的模块。

3. 在新的模块中编写自定义函数的代码。

4. 在Excel中调用自定义函数。

三、自定义函数的参数和返回值1. 自定义函数可以有多个参数,并且可以为参数定义默认值。

2. 自定义函数可以指定返回值的数据类型,如整数、字符串、日期等。

四、自定义函数的代码示例下面是一个简单的示例代码,演示了如何编写一个自定义函数来实现两个数相加的功能:```Function AddNumbers(a As Integer, b As Integer) As IntegerAddNumbers = a + bEnd Function```在编写代码时,需要注意函数的名称、参数和返回值的数据类型,这将决定函数的调用方式和计算结果。

五、利用自定义函数解决实际问题除了简单的数学计算,自定义函数还可以被应用到更复杂的数据处理和分析问题中。

以一个常见的例子来说明,假设我们有一个包含学生成绩的Excel 表格,其中包括各科目的得分和总分。

我们可以编写一个自定义函数来计算每个学生的平均分,并将结果显示在一个新的列中。

自动更新数据及累加复制保存VBA

自动更新数据及累加复制保存VBA

1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550 1550
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
1555 1555 1555 1555 1555 1556 2835 2864 2893 2922 2951 2980 3009 3038
202 203 204 205 206 207 208 209 210 211
1298 1327 1356 1385 1414 1443 1472 1501 1530 1559 1588 1617 1646 1675 1704 1733 1762 1791 1820 1849 1878 1907 1936 1965 1994 2023 2052 2081 2110 2139 2168 2197 2226 2255 2284 2313 2342 2371 2400 2429 2458 2487 2516 2545 2574 2603 2632 2661 2690 2719
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用VBA编写Excel自定义的累加函数郑云勇云南楚雄思远投资有限公司摘要:Excel是常用的数据统计分析软件,本文介绍了用VBA编写加载宏的方法来扩展、定制Excel,以适合工程统计专业的特殊需要。

下面,讨论如何实现一个自定义的具有任意合计形如“30.2m/165.45m3”的“分子/分母”工程量统计功能的函数,由于Sum函数系统已经内置,我们要实现的函数不妨命名为uLSum和uRSum。

关键词:Excel,定制,加载宏1引言电子表格软件Microsoft Excel具有快捷方便的数据输入方式和强大的数据处理能力,是工程地质中常用的数据统计分析软件,为我们的工作带来了极大的方便。

但Excel毕竟只是一个通用的办公软件,对于工程专业中的各种特殊需求,它自然不会有专门的功能支持。

比如:采矿工程师在做每年的采掘生产计划时,通常遇到要累加掘进工程量的合计数,即“30.5/125.6”加“120.2/625.8”的合计,我们通常的做法是分步完成,先将分子之、分母之和求出来后,在填入单元格中。

或者将分子、分母分别填入两列中,分别用sum函数求和。

这样既劳神,又容易出错,特别是对大量数据进行复杂的公式计算。

如果从头编写一个独立、专门的计算程序来处理,则似有小题大作之嫌,而且还不能与Excel无缝集成。

那么有没有更好的解决办法呢?答案是肯定的,那就是定制Excel,通过编程扩展它的功能。

事实上,Excel作为Microsoft最优秀的软件之一,很早就开始提供了二次开发的接口,4.0版以前有XLM,4.0版又发布了Excel C API,5.0版则内置了VBA。

现在的Excel,除了人所共知的操作功能外,还是一个完善的软件开发平台。

它拥有完备的ActiveX Automation服务器和客户机机制,可以通过编程对其进行全方位的扩展、定制,实现各种自定义功能。

基于ActiveX Automation技术,使用C/C++等多种支持Automation的编程语言均可控制Excel,但我们最为熟悉和常用的还是内置于Excel中的VBA。

2VBA简介Visual Basic for Application(VBA)是Microsoft面向最终用户的应用软件编程语言。

它最早出现于Microsoft的Excel和Project中,如今VBA已成为VB和所有Office产品的组件。

另外,越来越多的软件开发商购买了VBA语言的使用权,如常用的绘图软件AutoCAD等均已支持VBA作为二次开发工具。

这意味着我们懂得VB,就已经懂得了VBA,反之亦然。

VBA的最大特点和最大优点是利用面向对象(OOP)的ActiveX Automation技术,使语言的引擎在技术上与开发环境分离,这可以从在任何VBA的IDE环境中都可以看到VBA单独的入口得到印证。

因此,VBA的功能在很大程度上依赖于它的客户显露的Automation 接口,例如,VB与Office套件中的VBA,能完成的功能就大不一样。

当然,如其他许多通用编程语言一样,VBA可以方便地直接调用许多传统DLL(VB不能生成)模块中的函数,只要这些函数使用的数据类型能被VBA处理。

另一方面,由于VBA是基于ActiveX Automation 技术,它可以使用任何支持Automation技术的组件中的类和对象,换句话说,它能够集成系统中的各种支持Automation技术的应用程序共同工作。

VBA语言简单易学,但功能却不寻常,其运行效率对于普通的应用也完全能满足需要。

一般而言,使用VBA可以做到:①定制和扩展客户应用程序功能;②将客户应用程序及数据集成到其他应用程序中。

在Excel中,VBA最常见的用途即是录制宏。

每个可以用键盘或菜单命令完成的动作均能被宏记录下来,然后对不同数据进行(或播放)同一批操作。

录制宏可以保存在当前工作簿中,也可以保存在个人工作簿中。

当宏保存在个人工作簿中时,当前用户每次打开Excel时便都能使用其中包含的宏。

记录宏把需要用户重复的工作自动化,这其实已经是对Excel 的定制。

但它仅仅是定制或扩展Excel的开端。

因为,系统自动记录的宏虽然常常罗列了一大堆代码,但真正有用的却很少,且没有嵌入错误处理方案,至于我们需要实现的系统中没有的特殊功能,自然不可能有记录。

另外,录制宏也没有能与整个Excel系统完全融合,不便于提供给其他用户使用。

利用VBA定制Excel,Microsoft 推荐采用加载宏-即全局宏的方式。

3函数实现在Excel电子表格中最常使用的函数应该是Sum了,它是内置的;当然,在Excel中内置的函数还有很多;但是,往往我们使用的函数Excel中并没有直接提供,或者提供了我们并不知道,这个时候可以自己使用VBA定义一个自己需要使用的函数参与电子表格单元格的计算,这在日常工作中可能是经常要遇到的一个问题。

下面,讨论如何实现一个自定义的具有自动合计分子分母式样功能的函数。

首先,想到的应该使用VBA,毫无疑问,最直接的针对Excel 功能的扩展来源于VBA。

事实上,我们可以在Excel的Microsoft Visual Basic编辑器的模块中增加一个公共函数来实现该自定义函数,该公共自定义函数是可以在Excel单元格中直接像使用Excel 内置函数一样使用的。

使用菜单“工具——宏——Visual Basic编辑器”或者直接使用快捷键【Alt+F11】组合键,打开Microsoft Visual Basic编辑器窗口;在“工程”浏览器窗口中的树状目录的任一项目上单击右键,使用“插入——模块”命令;OK,在这个模块编辑器中,即可以开始编辑自定义函数了。

在此之前,我们应该考虑该函数的参数形式,和内置的Sum函数进行类比,我们可以发现Sum函数的参数应该是一个或多个单元格,而在VBA中对应的就应该是一个Range对象(关于Range对象可以参考Microsoft Visual Basic帮助中的Excel VBA对象模型),也就是说我们要自定义的函数的参数应该是一个Range对象,由此,我们可以在“模块1”的编辑器中自定义几个如下的函数:用ulSUM、urSUM求m/m3的值3.1编写函数分别取得分子和分母的数值'取得如“200/800”字符串右边的数字“800”(函数1)Public Function fipR(str1As String)As DoubleDim m As IntegerDim ss As Stringm=查询分隔位置(str1)If Len(str1)=0Thenss=0Elsess=Mid(str1,m+1)End IffipR=CDbl(ss)End Function'查询分子式中“/”字符的位置(函数2)Public Function查询分隔位置(ByVal sstrcha As String)As IntegerIf sstrcha=""Or IsNull(sstrcha)=True Then Exit Function查询分隔位置=InStr(1,sstrcha,"/",1)End Function'取得如“200/800”字符串左边的数字“200”(函数3) Public Function fipL(str1As String)As Double Dim m As IntegerDim ss As Stringm=查询分隔位置(str1)If Len(str1)=0Thenss=0Elsess=Left(str1,m-1)End IffipL=CDbl(ss)End Function'累加分子(函数4)Public Function uLSum(ParamArray x())As Double Dim i As IntegerDim j As IntegerDim k As IntegerDim rtn As Doublertn=0For i=0To UBound(x)For j=1To x(i).Rows.CountFor k=1To x(i).Columns.Countrtn=rtn+fipL(x(i).Cells(j,k)) Next kNext jNext iuLSum=rtnEnd Function'累加分母(函数5)Public Function uRSum(ParamArray x())As Double Dim i As IntegerDim j As IntegerDim k As IntegerDim rtn As Doublertn=0For i=0To UBound(x)For j=1To x(i).Rows.CountFor k=1To x(i).Columns.Countrtn=rtn+fipR(x(i).Cells(j,k)) Next kNext jNext iuRSum=rtnEnd Function函数很简单,遍历Range对象的所有单元格,使其中的数字相加后返回即可。

在上面的描述中,我们使用到VBA的ParamArray特性,使得uLSum、uRSum函数既能接受连续单元格区域中的数据求和,也能接收不连续单元格区域中的数据求和,如uLSum(B2:C3,B5:C6),函数4和函数5均能接受不定数量的多个参数。

保存更改后,返回到工作簿Book1界面,在连续的单元格(如B2:C3)中录入几个数字,然后在另外一个单元格(如E4)中录入“= uLSum(B2:C3)&"/"&uRSum(B2:C3)”,也就是说,我们使用我们自定义的合计函数uLSum、uRSum来计算区域B2:C3中的工程量数字之和。

经过验证,我们可以发现这两个函数可以实现内置函数Sum 的合计功能。

至此,我们可以这样使用类似于=Sum(B2:C3,B5:C6,B8:C9)的公式了。

也就是说,我们已经实现了一个和内置Sum函数一样功能的自定义函数了。

3.2实例当然,在VBA函数编写好并存盘后,今后打开文件,必须选择【启用宏】按钮,才能在工作簿中使用自定义的函数。

如下图所示。

¨霉C日g虬悍e000/2监00ee≮霉哥日Ji000、aa日00日000、Sie00Si3日0、Jija0J8ej0、i日日00ia0J0/33日80J3368/Jb0日bJJJ83bJ\8iaaoidJ¥☆,Ⅻ¥甘¥甘k喜ik}!斟目亩怀:《#并ni遵%■目j008士e甘望县弓埕b曾b喜¥Ees・}=nT2Ⅲ(Ee3:Ee^)F。

\。

F“2Ⅲ(Ee3:Ee^)=工T…州删一…・B、Ⅱ;i■司毫*・w≈一:]醴1’117蚵寻?1留・^・・矛∑・7f甜霄第五届矿山技术论文发布会实例应用,如下图所示:在E62单元格中,有公式“=uLSum (E63:E67)&"/"&uRSum(E63:E67)”,如此即可分别求出分子分母的合计值了。

相关文档
最新文档