excel、wps中出现的非内置不可识别函数是怎么回事?

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

       

发表评论