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

我下载了一个项目帐单报告,其中A列的名字和B列的费用代码。一个单元格中有多个费用代码,这些费用代码确定它是可计费的还是不可计费的,或者输入了错误的费用代码。

我在使用以下索引匹配公式时遇到困难。有没有一种方法可以从多个值之间用逗号分隔的单元格中查找值?

=INDEX(H2:H4,MATCH(H2,B2:B4,0))

Excel结算示例:

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

xdwm168 回答:从具有多个值的单元格中查找值excel

在看到工作表布局后更新答案……也许是这样(已纠正匹配错误)...

Option Explicit

Public Function LookupCode(ChargeCode As Range,vChargeCodes As Range) As Boolean

    Dim vRow As Long
    Dim vLookupCode As String

    LookupCode = False
    vRow = 2
    Do While LookupCode = False And ActiveSheet.Cells(vRow,9) <> ""
        If ActiveSheet.Cells(vRow,9) = ChargeCode Then
            If IsInArray(ActiveSheet.Cells(vRow,8),Split(vChargeCodes,",")) Then
                LookupCode = True
                Exit Do
            End If
        End If
        vRow = vRow + 1
    Loop

End Function

' variation of IsInArray from https://stackoverflow.com/questions/38267950/check-if-a-value-is-in-an-array-or-not-with-excel-vba
Function IsInArray(stringToBeFound As String,arr As Variant) As Boolean
    Dim vIndex As Long
    For vIndex = LBound(arr) To UBound(arr)
        If Trim(arr(vIndex)) = Trim(stringToBeFound) Then
            IsInArray = True
            Exit Function
        End If
    Next
    IsInArray = False
End Function

然后在工作表中...

enter image description here

,

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

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

对不起,我倾向于使用vlookup而不是索引和匹配。该公式将适用于两个代码,请根据需要重复该代码的第二部分。

祝你好运!

本文链接:https://www.f2er.com/3084087.html

大家都在问