我们都知道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,然后函数需要有返回值。


发表评论