我有以下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。
如何解决这个问题?
答案 0 :(得分:1)
这是一个引用命名范围的公式。因此,例如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说,你也可以使用Select..Case。但也许更好的方法是将值保存在隐藏的工作表中,然后可以更容易地配置查找。
我很想知道命名范围CE
中的内容是什么? (公式>名称管理员)