返回列表 上一主題 發帖

[發問] 請益 是否有更快的查詢方式

我測試了一下,大部分L跟R都有符合的BarCode啟始及結束條件的工單號碼,
所以L先找或R先找會有不同的答案?

例如
   BarCode              符合位置
A2 CYR128401TG0WLX2H        R42,L38
A3 CYR128401600WLX2U        R42,L3,L38
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 23# singo1232001

誤會了! 不是說你程式的問題

我作全比對L R兩個資料表,大部分這兩組資料表裡都有符合的位置,
因為大家的程式都是先比查詢L表在查詢R表,
我在練習時將查詢順序改為先比查詢R表在查詢L表,答案跟大家不同
所以發現資料去比對 起始BarCode 跟 結束BarCode,在L R表都有答案,滿奇怪的。

Sub LR全部比對()
    Dim LR(1 To 2), SN
    TM = Timer
    Set SN = Sheets("序號")
    LR(1) = [L!A1:L1].Resize([L!J65536].End(xlUp).Row)
    LR(2) = [R!B1:M1].Resize([R!J65536].End(xlUp).Row)
    Arr = SN.[A1].Resize(SN.[A65536].End(xlUp).Row, 3)
    ReDim Brr(1 To UBound(Arr), 1 To 4)
    Brr(1, 1) = "工單號碼": Brr(1, 2) = "LR位置": Brr(1, 3) = "起始BarCode": Brr(1, 4) = "結束BarCode"
    For i = 2 To UBound(Arr)
        Key = "": Wno = ""
        For j = 1 To 2
            For k = 2 To UBound(LR(j))
                If LR(j)(k, 10) <= Arr(i, 1) And Arr(i, 1) <= LR(j)(k, 12) Then
                    'Brr(i, 1) = LR(j)(k, 1)
                    'Brr(i, 2) = LR(j)(k, 3) & k
                    'Km = 1: Exit For
                    
                    Brr(i, 1) = Brr(i, 1) & "," & LR(j)(k, 1)      'L R 工單號碼
                    Brr(i, 2) = Brr(i, 2) & "," & LR(j)(k, 3) & k  'L R 位置
                    Brr(i, 3) = Brr(i, 3) & "," & LR(j)(k, 10) & k 'L R 起始Barcode
                    Brr(i, 4) = Brr(i, 4) & "," & LR(j)(k, 12) & k 'L R 結束Barcode
                End If
            Next
            'If Km = 1 Then Km = 0: Exit For
        Next
    Next
    SN.[D1].Resize(UBound(Arr), 4) = Brr
    SN.Range("D2,E3,F2,G2").Columns.AutoFit
    Debug.Print Timer - TM
End Sub
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題