我们都知道excel中内置了几百个函数,这些函数是excel的灵魂。
使用函数可以快速地完成各种计算、统计,不同的函数的组合嵌套使用更是威力无比。
但是有时候我们也会看到类似这样的在单元格出现了excel中无法找到的函数,如下所示:
GETH这个函数在Excel中是找不到的。
那么它到底是怎么实现的,怎么可以使用的呢?
其实这个是通过vba后台写的自定义函数。
按下组合快捷键ALT+F11,鼠标右键插入一个标准模块,输入如下的vba代码:
Public Function GetH(P As Range, T As Range) As Single Dim Ht(3) As Single Dim Hp(1) As Single Dim Pt(1) As Single Dim Tp(1) As Single Dim J, K J = Application.WorksheetFunction.Match(P, Sheets("电子焓熵表").Range("A:A")) K = Application.WorksheetFunction.Match(T, Sheets("电子焓熵表").Range("B5:B85")) Pt(0) = Sheets("电子焓熵表").Cells(J, 1) Pt(1) = Sheets("电子焓熵表").Cells(J + 1, 1) Tp(0) = Sheets("电子焓熵表").Cells(K + 4, 2) Tp(1) = Sheets("电子焓熵表").Cells(K + 5, 2) Ht(0) = Sheets("电子焓熵表").Cells(J - 81 + K, 4) Ht(1) = Sheets("电子焓熵表").Cells(J - 80 + K, 4) Ht(2) = Sheets("电子焓熵表").Cells(J + K, 4) Ht(3) = Sheets("电子焓熵表").Cells(J + K + 1, 4) Hp(0) = Ht(0) + (Ht(1) - Ht(0)) * (T - Tp(0)) / (Tp(1) - Tp(0)) Hp(1) = Ht(2) + (Ht(3) - Ht(2)) * (T - Tp(0)) / (Tp(1) - Tp(0)) GetH = Hp(0) + (Hp(1) - Hp(0)) * (P - Pt(0)) / (Pt(1) - Pt(0)) End Function
如下图所示:
再次返回到excel工作表中,就可以使用 GetH这个函数了。
当excel内置的函数无法满足我们的需要,或者说需要每次重复写入非常长的组合函数公式时,可以在vba中自己编写自定义函数来实现我们的目的,从而简化或者增强excel的功能。
在vba中编写自定义函数和在vba中写过程类似,唯一的几个不同就是Sub要改成Function,然后函数需要有返回值。
发表评论