Excel 从具有多个值的单元格中查找值

Excel 从具有多个值的单元格中查找值,excel,vba,indexing,match,Excel,Vba,Indexing,Match,我下载了一份项目计费报告,名字在A列,费用代码在B列。一个单元格中有多个费用代码,用于确定它是可计费的还是不可计费的,或者是错误的费用代码条目 我很难使用下面的索引匹配公式。有没有一种方法可以从一个单元格中查找由逗号分隔的多个值 =索引(H2:H4,匹配(H2,B2:B4,0)) Excel计费示例: 查看图纸布局后更新答案。。。可能是这样的(匹配错误已纠正) 选项显式 公共函数LookupCode(ChargeCode作为范围,vChargeCodes作为范围)作为布尔值 暗淡如长 作为字符串

我下载了一份项目计费报告,名字在A列,费用代码在B列。一个单元格中有多个费用代码,用于确定它是可计费的还是不可计费的,或者是错误的费用代码条目

我很难使用下面的索引匹配公式。有没有一种方法可以从一个单元格中查找由逗号分隔的多个值

=索引(H2:H4,匹配(H2,B2:B4,0))

Excel计费示例:


查看图纸布局后更新答案。。。可能是这样的(匹配错误已纠正)

选项显式
公共函数LookupCode(ChargeCode作为范围,vChargeCodes作为范围)作为布尔值
暗淡如长
作为字符串的Dim vLookupCode
LookupCode=False
vRow=2
Do While LookupCode=False和ActiveSheet.Cells(vRow,9)”“
如果ActiveSheet.Cells(vRow,9)=ChargeCode,则
如果IsInArray(ActiveSheet.Cells(vRow,8),拆分(vChargeCodes,“,”),则
LookupCode=True
退出Do
如果结束
如果结束
vRow=vRow+1
环
端函数
“IsInArray的变异来自https://stackoverflow.com/questions/38267950/check-if-a-value-is-in-an-array-or-not-with-excel-vba
函数IsInArray(StringToBeford作为字符串,arr作为变量)作为布尔值
暗淡的葡萄酒和长葡萄酒一样
对于vIndex=LBound(arr)到UBound(arr)
如果修剪(arr(vIndex))=修剪(stringToBeFound),则
IsInArray=True
退出功能
如果结束
下一个
IsInArray=False
端函数
然后在纸上


如果代码列表的格式始终相同,即前4个字符是代码,后跟逗号和空格,然后是下一个代码,则可以使用“If”和“mid”语句获取每个代码

=VLOOKUP(MID(B2,1,4),$H$2:$I$4,2,FALSE) & IF(LEN(B2)>5,", " & VLOOKUP(MID(B2,7,4),$H$2:$I$4,2,FALSE),"")
对不起,我倾向于使用vlookup而不是index和match。该公式适用于两个代码,根据需要对任意多个代码重复公式的第二部分

祝你好运

=VLOOKUP(MID(B2,1,4),$H$2:$I$4,2,FALSE) & IF(LEN(B2)>5,", " & VLOOKUP(MID(B2,7,4),$H$2:$I$4,2,FALSE),"")