我必须创建一个仪表板,C列将有不同的衍生产品,其成熟度称为短名称。 IRS示例7月18日。
有20个姓氏,有时候,c列可能有较低或较高字符的交易短名称。
我创建了一个嵌套的if语句,它在某种程度上起作用,只有当某个字符是大写或小写时才会失败。因此,我必须将此变体添加到if语句中,以使其起作用。其次,它没有找到未列出产品的短名称。
我可以这样做,它只查找字符并忽略大写和小写。
我的最后一句话,如果一个新的家族添加了一个短名称,我很想接受它。有什么想法我可以更新吗?
而不是给出完整列表,我把它保持得很小
实施例
If DerivativeID Like "*irs *" Then
DerivativeFamily = "Interest Rate Swap "
ElseIf DerivativeID Like "*cds *" Then
DerivativeFamily = "credit default swap "
Else
DerivativeFamily = "Add to List"
End If
答案 0 :(得分:3)
听起来像SELECT ... CASE的工作。试试这个:
DerivativeID = UCase(DerivativeID)
Select Case True
Case DerivativeID like "*IRS*"
DerivativeFamily = "Interest Rate Swap "
Case DerivativeID like "*CDS*"
DerivativeFamily = "Credit Default Swap "
Case Else
DerivativeFamily = "Add to List"
End Select
答案 1 :(得分:2)
在模块顶部指定Option Compare Text
。默认字符串比较模式为Binary
,这使得"A"
在字符串比较中不等于"a"
。
使用=
运算符进行直接比较时,您还可以使用StrComp
模块中的VBA.Strings
函数覆盖Option Compare
设置:
Debug.Print StrComp("A", "A", vbBinaryCompare) 'prints 0
Debug.Print StrComp("A", "a", vbBinaryCompare) 'prints -1
Debug.Print StrComp("A", "A", vbTextCompare) 'prints 0
Debug.Print StrComp("A", "a", vbTextCompare) 'prints 0
正如其他答案所示,您也可以转换字符串的大小写。但是在这样做时你应该注意以下几点:
LCase
或UCase
,您使用的是Variant
- 返回别名,这会产生额外的隐式类型转换开销,使用{{1}可以轻松避免} - 回复对手,String
和LCase$
。答案 2 :(得分:2)
仅使用LCase功能:
If LCase$(DerivativeID) Like "*irs *" Then
DerivativeFamily = "Interest Rate Swap "
ElseIf LCase$(DerivativeID) Like "*cds *" Then
DerivativeFamily = "credit default swap "
Else
DerivativeFamily = "Add to List"
End If
答案 3 :(得分:1)
尝试使用LCase或UCase功能
类似的东西:
设置DerivativeID = LCase(DerivativeID)
如果......那么