返回列表 上一主題 發帖

資料比對

謝謝老師的回覆
沒關係,我在用人工複製二表單在排序,不影響結果,感謝老師耐心指導

TOP

回復 11# sillykin


H~K的結果是由A~D欄(人工複製二表單在排序)產出(原先您的需求),  
V~Y的結果是由"人工名冊"和"會計名冊"產出依據條件一樣(戶名+查詢日)
就如先前在詢問您A~D欄的資料規則,所以一直不知如何下手,
請問您有需求V~Y的程式需求嗎?

擷取1.PNG (57.98 KB)

擷取1.PNG

TOP

H~K的結果是由A~D欄(人工複製二表單在排序)產出(原先您的需求),  
V~Y的結果是由"人工名冊"和"會計名冊"產出依據條件一樣(戶名+查詢日)
就如先前在詢問您A~D欄的資料規則,所以一直不知如何下手,
請問您有需求V~Y的程式需求嗎?
有需求V~Y的程式
但也需要A-D欄位的複製及排序

TOP

本帖最後由 samwang 於 2021-8-27 16:18 編輯

回復 13# sillykin

相同: V~Y的結果是由"人工名冊"和"會計名冊"產出依據條件一樣(戶名+查詢日)
不相同: 條件如上,結果AA~AD欄


但也需要A-D欄位的複製及排序 >> 這無法寫,因為沒有規則

Sub test()
Dim Arr, Brr(), Crr(), xD, xD1, T$, i&, n%, n1%
Set xD = CreateObject("Scripting.Dictionary")
Set xD1 = CreateObject("Scripting.Dictionary")
Arr = Range([人工名冊!a1], [人工名冊!c65536].End(3))
ReDim Brr(1 To UBound(Arr), 1 To 4) '相同
ReDim Crr(1 To UBound(Arr), 1 To 4) '不相同
For i = 2 To UBound(Arr)
    T = Arr(i, 3) & "_" & Arr(i, 1)
    xD(T) = Array(Arr(i, 1), Arr(i, 3))
Next
Arr = Range([會計名冊!a1], [會計名冊!c65536].End(3))
For i = 2 To UBound(Arr)
    T = Arr(i, 2) & "_" & Arr(i, 3)
    xD1(T) = Array(Arr(i, 1), Arr(i, 2), Arr(i, 3))
Next
For Each ky In xD
    If xD1.Exists(ky) Then
        n = n + 1: Brr(n, 1) = xD(ky)(0): Brr(n, 3) = xD(ky)(1)
        n = n + 1: For j = 2 To 4: Brr(n, j) = xD1(ky)(j - 2): Next
    Else
        n1 = n1 + 1: Crr(n1, 1) = xD(ky)(0): Crr(n1, 3) = xD(ky)(1)
    End If
Next
For Each ky In xD1
    If Not xD.Exists(ky) Then
        n1 = n1 + 1: For j = 2 To 4: Crr(n1, j) = xD1(ky)(j - 2): Next
    End If
Next
With Sheets("比對")
    If n > 0 Then   '相同
        .[v1:y1] = Array("日期", "統一編號", "戶名", "查詢日")
        .[v2].Resize(n, 4) = Brr
    End If
    If n1 > 0 Then  '不相同
        .[aa1:ad1] = Array("日期", "統一編號", "戶名", "查詢日")
        .[aa2].Resize(n1, 4) = Crr
    End If
End With
End Sub

TOP

謝謝你,我在試一下,感謝

TOP

本帖最後由 軒云熊 於 2021-8-31 15:16 編輯

回復 15# sillykin

但也需要A-D欄位的複製及排序
這是之前準大寫的 改了一下 試試看是不是你要的 感謝

資料比對-110.08.23.rar (35.89 KB)

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題