zoukankan      html  css  js  c++  java
  • Excel VBA自定义函数编写(UDF, User-Defined Function)

    虽然知道Microsoft Office Excel可以支持用VB语言来进行复杂的编程和自定义函数的编写,但是一直以来都没有这个需求。

    这次遇到的问题是要根据一列数组计算出一个值,但计算过程又比较复杂,需要经过几步,如果不编程的话总要经过一些中间单元格来完成计算,但这又会使得整个表格变得很臃肿,并且不方便添加新列。

    在这种情况下,编写自定义函数几乎成了唯一的出路。所幸,也并不太麻烦。

    1. 首先,可能要在选项里启用下开发工具,保存文件的类型也得换成xlsm。

    2. 打开VB编辑器编写代码,添加模块,写自己的函数,写完也不需要编译,在Excel表格里就能够使用。

    3. 这个VB编译器还是灰常的初级,所以写代码不是很方便是必然的,提示和补全功能都比较弱,忍忍。另外,不熟悉Excel相关的类结构导致写代码时也比较难写,幸亏我只是写了些简单的操作。

    4. 即使是对于单元格简单的运算,因为有多种情况,如不是有效的值,要自己写起来还是挺麻烦的;而最方便的方法是调用系统原来有的方法。

    帖一个这次写的函数,是由一列收益求最大回撤。

     1 Function JDrawBack(rRange As Range)
     2     Dim N As Long
     3     Dim D As Double
     4     Dim CurrentMax As Double
     5     Dim CurrentMaxDrawBack As Double
     6     CurrentMaxDrawBack = 0
     7 
     8     For Each cl In rRange
     9         D = WorksheetFunction.Sum(cl, D)
    10         If D > CurrentMax Then
    11            CurrentMax = D
    12         End If
    13 
    14         If CurrentMax - D > CurrentMaxDrawBack Then
    15             CurrentMaxDrawBack = CurrentMax - D
    16         End If
    17     Next cl
    18 
    19     JDrawBack = CurrentMaxDrawBack
    20 End Function            
  • 相关阅读:
    event事件学习小节
    简单的碰壁反弹效果
    从全局中通过class类名获取标签
    js中常用的Tab切换
    将一串字符串转变为驼峰样式(字符串练习)
    js控住DOM实现发布微博简单效果
    使用js制作一般网站首页图片轮播效果
    使用js实现带有停顿效果的图片滚动(按钮控制)
    js实现标准无缝滚动
    toLowerCase和toLocaleLowerCase的区别
  • 原文地址:https://www.cnblogs.com/shyanye/p/4298256.html
Copyright © 2011-2022 走看看