Paste có điều kiện

Liên hệ QC

vuthaiha90

Thành viên mới
Tham gia
14/6/09
Bài viết
36
Được thích
0
Giới tính
Nam
Em chào các bác ạ, em gặp 1 vướng mắc nhỏ thế này ạ, em đang dùng bộ code Copy Paste lần lượt này ạ. Chắc chắn các mã cơ sở sẽ là 34902001, 34902002, ... , 349020100. Nhưng nếu có khoảng chục cơ sở chưa thể gửi file lên được, thì nếu em dùng bộ code này nó vẫn paste lần lượt những file mà những cơ sở đã gửi lên rồi. Giờ em muốn đối chiếu trước mã cơ sở trong file gửi lên với mã cơ sở trong file Copy Paste, nếu đúng ở cột nào thì paste vào cột ấy được không ạ. Em cảm ơn các bác trước.
(-Trong file đính kèm là ví dụ thu gọn có 5 cơ sở, mà mới có cơ sở 1,2,4 gửi, em muốn paste đúng vào cột 1,2,4. Sau này 3,5 gửi lên paste tiếp vào sau ạ)
 

File đính kèm

Em chào các bác ạ, em gặp 1 vướng mắc nhỏ thế này ạ, em đang dùng bộ code Copy Paste lần lượt này ạ. Chắc chắn các mã cơ sở sẽ là 34902001, 34902002, ... , 349020100. Nhưng nếu có khoảng chục cơ sở chưa thể gửi file lên được, thì nếu em dùng bộ code này nó vẫn paste lần lượt những file mà những cơ sở đã gửi lên rồi. Giờ em muốn đối chiếu trước mã cơ sở trong file gửi lên với mã cơ sở trong file Copy Paste, nếu đúng ở cột nào thì paste vào cột ấy được không ạ. Em cảm ơn các bác trước.
(-Trong file đính kèm là ví dụ thu gọn có 5 cơ sở, mà mới có cơ sở 1,2,4 gửi, em muốn paste đúng vào cột 1,2,4. Sau này 3,5 gửi lên paste tiếp vào sau ạ)
Dùng thử code này xem sao.
Mã:
Sub TongHop()
    Application.ScreenUpdating = False
    Dim i As Long
    Dim nFile As Long
    nFile = S01.Range("B1000").End(xlUp).Row
    Dim Wb As Workbook
    Dim Ws As Worksheet
    Dim cCell As Range

    With S02
        .Range("A2:AZ817").ClearContents
        .Range("A1") = S01.Range("A1")
        .Range("A2") = S01.Range("A2")
        For i = 1 To nFile
            Set Wb = Workbooks.Open(S01.Range("B" & i))
            Set Ws = Wb.Worksheets("G035841")
            .Cells(2, i * 2) = S01.Range("A3")
            .Cells(2, i * 2 + 1) = S01.Range("A4")
            If i = 1 Then .Range("A3:A817").Value = Ws.Range("B19:B834").Value
            Set cCell = .Range("1:1").Find(Ws.Range("C3").Value, , xlValues, xlWhole, , , True)
            If Not cCell Is Nothing Then
                cCell.Offset(2).Resize(816, 2).Value = Ws.Range("H19:I835").Value
            End If
            Wb.Close False
            Set Wb = Nothing
        Next
        .Range("B3:B818").Resize(, S02.UsedRange.Columns.Count).NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
        .Range("B3:B818").Resize(, S02.UsedRange.Columns.Count).EntireColumn.AutoFit
        Application.ScreenUpdating = True
    End With
MsgBox "Xong"
End Sub
 
Upvote 0
Dùng thử code này xem sao.
Mã:
Sub TongHop()
    Application.ScreenUpdating = False
    Dim i As Long
    Dim nFile As Long
    nFile = S01.Range("B1000").End(xlUp).Row
    Dim Wb As Workbook
    Dim Ws As Worksheet
    Dim cCell As Range

    With S02
        .Range("A2:AZ817").ClearContents
        .Range("A1") = S01.Range("A1")
        .Range("A2") = S01.Range("A2")
        For i = 1 To nFile
            Set Wb = Workbooks.Open(S01.Range("B" & i))
            Set Ws = Wb.Worksheets("G035841")
            .Cells(2, i * 2) = S01.Range("A3")
            .Cells(2, i * 2 + 1) = S01.Range("A4")
            If i = 1 Then .Range("A3:A817").Value = Ws.Range("B19:B834").Value
            Set cCell = .Range("1:1").Find(Ws.Range("C3").Value, , xlValues, xlWhole, , , True)
            If Not cCell Is Nothing Then
                cCell.Offset(2).Resize(816, 2).Value = Ws.Range("H19:I835").Value
            End If
            Wb.Close False
            Set Wb = Nothing
        Next
        .Range("B3:B818").Resize(, S02.UsedRange.Columns.Count).NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
        .Range("B3:B818").Resize(, S02.UsedRange.Columns.Count).EntireColumn.AutoFit
        Application.ScreenUpdating = True
    End With
MsgBox "Xong"
End Sub
Dạ, đã đúng theo thực tế của em rồi ạ, em cảm ơn bác
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom