返回列表 上一主題 發帖

依據單別+廠別,利用公式判斷,儲位是否正確

依據單別+廠別,利用公式判斷,儲位是否正確

依據單別+廠別,利用公式判斷,儲位是否正確
正確儲位可以是3個其中一個,也可以是2位英文字,請問要如何利用公式判斷?
javascript:;
TEST.zip (9.08 KB)                        
單別        廠別        儲位        儲位說明
正常單        0        H.Z.L.U        =>可以是H或Z或L或U
大園單        D        X.S.J        =>可以是X或S或J
其他單        G        C.E.F        =>可以是C或E或F
預購單        Q               
五寶單        V        B.I.R        =>可以是B或I或R
其他單7        Y6        HKQ        =>必須是HKQ
其他單8        Y1        HK        =>必須是HK
其他單9        Y3        HQ        =>必須是HQ
衛生紙單        Y        JKQ        =>必須是JKQ
水酒單        YW        JKQ        =>必須是JKQ
其他        G        C.E.F        =>可以是C或E或F

回復 1# VANESSA

請測試看看,謝謝
另外檢查小表要加入其他單資訊如照片,您提供答案有2筆錯誤如照片

Sub test()
Dim Arr, xD, T$, pos%
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([j5], [g65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 1) & "|" & Arr(i, 2)
    xD(T) = Array(Arr(i, 3), Arr(i, 4))
Next
Arr = Range([d1], [a65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 1) & "|" & Arr(i, 3)
    If xD.Exists(T) Then
        pos = InStr(xD(T)(0), Arr(i, 2))
        If pos = 0 Then
            Arr(i, 4) = "錯誤,因為" & Arr(i, 1) & "+" & Arr(i, 3) & ",儲位" & xD(T)(1)
        Else
            Arr(i, 4) = "正確,因為" & Arr(i, 1) & "+" & Arr(i, 3) & ",儲位" & xD(T)(1)
        End If
    End If
Next
Range("a1").Resize(UBound(Arr), 4) = Arr
End Sub
1.JPG

TOP

隨意窩 "EXCEL迷"  blog  或https://blog.xuite.net/hcm19522/twblog
已收集8500篇 EXCEL函數

TOP

回復 1# VANESSA

您提供答案有2筆錯誤>> 更正2#,您的答案是正確,更新如下,謝謝

Sub test2()
Dim Arr, xD, T$, pos%, a, i&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([j5], [g65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 1) & "|" & Arr(i, 2)
    xD(T) = Array(Arr(i, 3), Arr(i, 4))
Next
Arr = Range([d1], [a65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 1) & "|" & Arr(i, 3)
    If xD.Exists(T) Then
        a = Split(xD(T)(0), ".")
        For j = 0 To UBound(a)
            If Arr(i, 2) = a(j) Then pos = 1
        Next
        If pos = 0 Then
            Arr(i, 4) = "錯誤,因為" & Arr(i, 1) & "+" & Arr(i, 3) & ",儲位" & xD(T)(1)
        Else
            Arr(i, 4) = "正確,因為" & Arr(i, 1) & "+" & Arr(i, 3) & ",儲位" & xD(T)(1)
            pos = 0
        End If
    End If
Next
Range("a1").Resize(UBound(Arr), 4) = Arr
End Sub

TOP

=IF(ISERR(FIND("."&B2&".",LOOKUP(,0/(A2&C2=G$6:G$16&H$6:H$16),"."&I$6:I$16&"."))),"錯誤","正確")
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

太厲害了,感謝,

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題