返回列表 上一主題 發帖

[發問] 比對(數組)

看不懂需求及要處理的流程~~
[匯入]及[更新]是不同的,
[過帳]又是怎判定??

TOP

回復 3# s7659109


既然K欄已有〔註記〕,即可憑此略過匯入,何必再用A&B&C去比對???

所謂的〔鎖住〕,是指〔保護工作表〕???

TOP

回復 5# s7659109
Sub 匯入()
Dim Arr, Brr, xD, r&, i&, j%, T$, xU As Range, N&
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([匯總!C1], [匯總!A65536].End(xlUp))
For i = 2 To UBound(Arr)
    xD(Arr(i, 1) & Arr(i, 2) & Arr(i, 3)) = 1
Next i
Application.ScreenUpdating = False
With Sheets("data")
     .Unprotect
     .[A:K].Locked = False
     Set xU = .[A1:K1]
     r = .[A65536].End(xlUp).Row
     Arr = .Range("A1:J" & r)
     Brr = .Range("K1:K" & r)
     For i = 2 To r
         If Val(xD(Arr(i, 1) & Arr(i, 2) & Arr(i, 3))) <> 1 Then
            N = N + 1
            For j = 1 To 10: Arr(N, j) = Arr(i, j): Next
         End If
         Brr(i, 1) = "v"
         Set xU = Union(xU, .Cells(i, 1).Resize(1, 11))
     Next i
     .[K1].Resize(r) = Brr
     xU.Locked = True
     .EnableAutoFilter = True
     .Protect Contents:=True, UserInterfaceOnly:=True
End With
If N = 0 Then Exit Sub
[匯總!B:B].NumberFormatLocal = "@"
[匯總!A65536].End(xlUp)(2).Resize(N, 10) = Arr
End Sub

Xl0000235(匯入).rar (18.51 KB)

TOP

回復 7# s7659109

值轉值 或 文字轉值
val(1)=1
val("1")=1
val("")=0
val("a")=0

TOP

回復 9# s7659109

[匯總!B:B].NumberFormatLocal = "@"
即是[格式]設定, 自行用[錄製]即可取得格式,
或手動預先[整欄]設定!!!

話說, 貴 提問帖也發了不少, 看那麼多別人寫的程式碼,
這種簡單的vba, 也應自己可以做出來~~~

提供程式碼, 是希望給人學習再套用至類似需求上,
否則僅是[客製化]的用途,用完即丟 ~~乾脆接案去了~~~

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題