>我有以下 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
?(公式>名称管理器)