VBA自定义IF函数不起作用



>我有以下 IF 语句:

lF(C:C=CE,0.3,(IF(C:C=CS,0.2,(IF( C:C=TE,0.2,(IF( C:C=MV,0.25,(IF( C:C=HCV,0.375,(IF( C:C=HM,0.3,(IF( C:CLM,0.125,(IF( C:C=FF,0.125,(IF( C:C=OE,0.3,0))))))))))

然后,我在我的第一个 VBA 模块中将其作为函数输入为:

Function DepRate(pVal As String) As Long
   If pVal = "HCV" Then
      DepRate = 0.375
   ElseIf pVal = "OE" Then
      DepRate = 0.3
   ElseIf pVal = "CE" Then
      DepRate = 0.3
   ElseIf pVal = "CS" Then
      DepRate = 0.2
   ElseIf pVal = "TE" Then
      DepRate = 0.2
   ElseIf pVal = "MV" Then
      DepRate = 0.25
   ElseIf pVal = "FF" Then
      DepRate = 0.125
   ElseIf pVal = "LM" Then
      DepRate = 0.125
   Else
      DepRate = 0
   End If
End Function

在 excel 上使用函数时,即使特定单元格中的值为 true,结果也始终为 0。

如何纠正?

这是一个引用命名范围的公式。因此,例如C:C = CE将 C 列中的值与命名范围CE进行比较。

因此,例如,您需要具有这样的函数...

Function DepRate(pVal As String) As Long
   If pVal = ActiveSheet.Range("HCV").Value Then
      DepRate = 0.375
etc... etc..

您也可以使用选择。正如Veve所说。但也许更好的是将值保存在隐藏的工作表中,然后可以更轻松地配置查找。

例如,我很想知道命名范围内有什么CE?(公式>名称管理器)