Board logo

標題: 依據單別+廠別,利用公式判斷,儲位是否正確 [打印本頁]

作者: VANESSA    時間: 2021-11-24 19:36     標題: 依據單別+廠別,利用公式判斷,儲位是否正確

依據單別+廠別,利用公式判斷,儲位是否正確
正確儲位可以是3個其中一個,也可以是2位英文字,請問要如何利用公式判斷?
javascript:;
[attach]34432[/attach][attach]34432[/attach][attach]34432[/attach][attach]34432[/attach]                       
單別        廠別        儲位        儲位說明
正常單        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
作者: samwang    時間: 2021-11-25 12:04

回復 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
作者: hcm19522    時間: 2021-11-25 14:25

https://blog.xuite.net/hcm19522/twblog/590142590
作者: samwang    時間: 2021-11-25 15:13

回復 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
作者: ML089    時間: 2021-11-25 20:22

=IF(ISERR(FIND("."&B2&".",LOOKUP(,0/(A2&C2=G$6:G$16&H$6:H$16),"."&I$6:I$16&"."))),"錯誤","正確")
作者: VANESSA    時間: 2021-11-25 23:27

太厲害了,感謝,




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)