Vba IF/Else匹配字符串的第一个字符,ICD-10诊断代码

Vba IF/Else匹配字符串的第一个字符,ICD-10诊断代码,vba,excel,Vba,Excel,我正在研究一个宏,它接受一个ICD代码,并将代码转换为大约16个诊断类别之一。它首先识别代码是ICD 9还是ICD 10(本部分有效),删除前导零(本部分有效),删除小数点后的任何内容(本部分有效),然后使用If语句确定代码属于哪个类别(适用于ICD9,但不适用于ICD10) ICD-10代码的格式为[字母][####].[##]等,如“K50.814”。工作表函数将其转换为“K50”(常规组)。我的宏接受“K50” 错误示例如下: 输入:R57 输出:#值 调试: 调试打印(strDxLett

我正在研究一个宏,它接受一个ICD代码,并将代码转换为大约16个诊断类别之一。它首先识别代码是ICD 9还是ICD 10(本部分有效),删除前导零(本部分有效),删除小数点后的任何内容(本部分有效),然后使用If语句确定代码属于哪个类别(适用于ICD9,但不适用于ICD10)

ICD-10代码的格式为[字母][####].[##]等,如“K50.814”。工作表函数将其转换为“K50”(常规组)。我的宏接受“K50”

错误示例如下:

输入:R57

输出:#值

调试:

调试打印(strDxLetter):R

调试。打印VarType(strDxLetter):8

调试.打印(intDxCode):57

功能DxGroup2(诊断为变型)
'诊断为变体,因为ICD9仅使用数字,而ICD10以字母开头,后跟数字
作为字符串的Dim strDxLetter
'变量将用于存储icd10 dx的第一个字母
作为整数的Dim intDxCode
'这里通常有ICD9代码的if语句。这部分很好用
'如果不是ICD 9,则使用的编码方法必须是ICD 10
其他的
'获取ICD代码的第一个字符,即诊断组字母
strDxLetter=左侧(诊断,1)
'获取工作表中已转换为整数的ICD代码的其余部分
intDxCode=Mid(诊断,2,透镜(诊断))
“这里是我尝试错误测试的地方。第一个字母返回准确,数据类型为字母的字符串,代码返回正确
调试.打印(strDxLetter)
调试.打印VarType(strDxLetter)
Debug.Print(intDxCode)
'首先将字母代码与诊断组匹配
如果strDxLetter=“A”或“B”,则
DxGroup2=“传染病和寄生虫病”
ElseIf strDxLetter=“C”然后
DxGroup2=“肿瘤”
ElseIf strDxLetter=“D”然后
如果intDxCode>=0和intDxCode=50,以及intDxCode 0和intDxCode 59和intDxCode这里有一个问题:

If strDxLetter = "A" Or "B" Then
应该是

If strDxLetter = "A" Or strDxLetter = "B" Then
这里有一个问题:

If strDxLetter = "A" Or "B" Then
应该是

If strDxLetter = "A" Or strDxLetter = "B" Then

您熟悉
case
语句吗?从测试子项或VB编辑器中的立即窗格调用您的函数:这将显示problem@findwindow我不熟悉
案例
语句,但我查了一下,认为它更合适。我明天上班的时候会尝试一下,听听蒂姆的建议,看看能不能解决问题,然后再给你回复。谢谢您熟悉
case
语句吗?从测试子项或VB编辑器中的立即窗格调用您的函数:这将显示problem@findwindow我不熟悉
案例
语句,但我查了一下,认为它更合适。我明天上班的时候会尝试一下,听听蒂姆的建议,看看能不能解决问题,然后再给你回复。谢谢