Xin giúp đỡ code lấy giữ liệu từ Sheet tổng hợp để điền dữ liễu vào các ngày tương ứng trong sheet khác

Liên hệ QC

dangky47h

Thành viên thường trực
Tham gia
4/9/17
Bài viết
329
Được thích
41
Giới tính
Nam
Em nhờ các anh, chị giúp đỡ em code lấy dữ liệu từ sheet "Tong" để điền vào các ngày tương ứng trong các sheet (HM1 đến HM5)
Em mong được sự giúp đỡ.lich truc.jpg
 

File đính kèm

  • Lich truc.xlsx
    27.9 KB · Đọc: 11

File đính kèm

  • Lich truc.xlsb
    31.1 KB · Đọc: 11
Upvote 0
Em nhờ các anh, chị giúp đỡ em code lấy dữ liệu từ sheet "Tong" để điền vào các ngày tương ứng trong các sheet (HM1 đến HM5)
Em mong được sự giúp đỡ.View attachment 202662
;)
PHP:
Sub UpDateData()
    Dim Dic As Object, sArr(), tArr(), dArr(), I As Long, R As Long
    Dim WsData As Worksheet, Ws As Worksheet
Set Dic = CreateObject("Scripting.Dictionary")
Set WsData = Sheets("Tong")
With WsData
    sArr = .Range("H2", .Range("H" & Rows.Count).End(xlUp)).Resize(, 2).Value
End With
For I = 1 To UBound(sArr)
    Dic.Item(sArr(I, 1)) = I
Next I
For Each Ws In Worksheets
    If Ws.Name <> WsData.Name Then
        With Ws
            tArr = .Range("B2", .Range("B" & Rows.Count).End(xlUp)).Value
            ReDim dArr(1 To UBound(sArr), 1 To 1)
            For I = 1 To UBound(tArr)
                R = Dic.Item(tArr(I, 1))
                If R Then dArr(I, 1) = sArr(R, 2)
            Next I
            .Range("R2", .Range("R" & Rows.Count).End(xlUp)).ClearContents
            .Range("R2").Resize(I - 1) = dArr
        End With
    End If
Next
MsgBox "Da Cap nhat xong.", , "Thong bao"
Set Dic = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Một cách thô thiển đây & xin mời
PHP:
Sub TuTrang_Tong()
 Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range
 Dim Rws As Long
 
 With Sheets("Tong").[H2]
   ' Rws = .CurrentRegion.Rows.Count
    Set Rng = .Resize(9999)
 End With
 For Each Sh In ThisWorkbook.Worksheets
    If Left(Sh.Name, 2) = "HM" Then
        For Each Cls In Sh.Range(Sh.[B2], Sh.[B2].End(xlDown))
            Set sRng = Rng.Find(Format(Cls.Value, "MM/DD/yyyy"), , xlValues, xlWhole)
            If sRng Is Nothing Then 
            Else
                Sh.Cells(Cls.Row, "R").Value = sRng.Offset(, 1).Value
            End If
        Next Cls
    End If
 Next Sh
End Sub
 
Upvote 0
Nếu các ngày không trùng nhau thì bạn dùng file này, copy ngày tháng vào cột H của các sheet HM1 đến HM5 và xem kết quả
Anh ơi ý em là các ngày ở các sheet có thể trùng hay không trùng nhưng đều lấy từ sheet "Tong" để điền vào các ngày tươn ứng trong sheet HM1, MH2, MH3, MH4, HM5
 
Upvote 0
Một cách thô thiển đây & xin mời
PHP:
Sub TuTrang_Tong()
Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range
Dim Rws As Long

With Sheets("Tong").[H2]
   ' Rws = .CurrentRegion.Rows.Count
    Set Rng = .Resize(9999)
End With
For Each Sh In ThisWorkbook.Worksheets
    If Left(Sh.Name, 2) = "HM" Then
        For Each Cls In Sh.Range(Sh.[B2], Sh.[B2].End(xlDown))
            Set sRng = Rng.Find(Format(Cls.Value, "MM/DD/yyyy"), , xlValues, xlWhole)
            If sRng Is Nothing Then
            Else
                Sh.Cells(Cls.Row, "R").Value = sRng.Offset(, 1).Value
            End If
        Next Cls
    End If
Next Sh
End Sub
Dạ em cám ơn Thầy, chúc Thầy buổi tối vui vẻ!
 
Upvote 0
Upvote 0
Một cách thô thiển đây & xin mời
PHP:
Sub TuTrang_Tong()
Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range
Dim Rws As Long

With Sheets("Tong").[H2]
   ' Rws = .CurrentRegion.Rows.Count
    Set Rng = .Resize(9999)
End With
For Each Sh In ThisWorkbook.Worksheets
    If Left(Sh.Name, 2) = "HM" Then
        For Each Cls In Sh.Range(Sh.[B2], Sh.[B2].End(xlDown))
            Set sRng = Rng.Find(Format(Cls.Value, "MM/DD/yyyy"), , xlValues, xlWhole)
            If sRng Is Nothing Then
            Else
                Sh.Cells(Cls.Row, "R").Value = sRng.Offset(, 1).Value
            End If
        Next Cls
    End If
Next Sh
End Sub
Thầy ơi, em hỏi chút ạ! e thay đổi tên sheet cần điền dữ liệu không phải theo quy luật là HM1, MH2, HM3, HM4, HM5 mà là tên bất kỳ nào đó ở mỗi sheet không theo quy luật "HM" thì sửa lại code như thế nào ạ!
Em ví dụ như hình dưới:
tyu.jpg
Bài đã được tự động gộp:

;)
PHP:
Sub UpDateData()
    Dim Dic As Object, sArr(), tArr(), dArr(), I As Long, R As Long
    Dim WsData As Worksheet, Ws As Worksheet
Set Dic = CreateObject("Scripting.Dictionary")
Set WsData = Sheets("Tong")
With WsData
    sArr = .Range("H2", .Range("H" & Rows.Count).End(xlUp)).Resize(, 2).Value
End With
For I = 1 To UBound(sArr)
    Dic.Item(sArr(I, 1)) = I
Next I
For Each Ws In Worksheets
    If Ws.Name <> WsData.Name Then
        With Ws
            tArr = .Range("B2", .Range("B" & Rows.Count).End(xlUp)).Value
            ReDim dArr(1 To UBound(sArr), 1 To 1)
            For I = 1 To UBound(tArr)
                R = Dic.Item(tArr(I, 1))
                If R Then dArr(I, 1) = sArr(R, 2)
            Next I
            .Range("R2", .Range("R" & Rows.Count).End(xlUp)).ClearContents
            .Range("R2").Resize(I - 1) = dArr
        End With
    End If
Next
MsgBox "Da Cap nhat xong.", , "Thong bao"
Set Dic = Nothing
End Sub
E cám ơn Chị ạ!
 

File đính kèm

  • lich su.xlsb
    26.1 KB · Đọc: 6
Upvote 0
e thay đổi tên sheet cần điền dữ liệu không phải theo quy luật là HM1, MH2, HM3, HM4, HM5 mà là tên bất kỳ nào đó ở mỗi sheet không theo quy luật "HM" thì sửa lại code như thế nào ạ!
Nên theo khuôn fép, theo qui luật;
Còn bằng khác đi thì fải trang bị thêm kiến thức thôi:
Đưa hết tên các trang tính cần thiết vô mảng (đã khai báo trước)
Sau đó duyệt theo mảng chứa các tên trang này 1 cách lần lượt. & Bạn tự tiếp tục xem sao!
 
Upvote 0
Nên theo khuôn fép, theo qui luật;
Còn bằng khác đi thì fải trang bị thêm kiến thức thôi:
Đưa hết tên các trang tính cần thiết vô mảng (đã khai báo trước)
Sau đó duyệt theo mảng chứa các tên trang này 1 cách lần lượt. & Bạn tự tiếp tục xem sao!
Vâng, em cám ơn ạ!
 
Upvote 0
Bài này có thể dùng Advanced Filter với 1 vòng lập. Vùng điều kiện chính là cột B ở các sheets con
Ai đó thử xem
-------------
Chỉ e rằng dữ liệu thật của tác giả lại không giống thế thì thua
 
Upvote 0
Nên theo khuôn fép, theo qui luật;
Còn bằng khác đi thì fải trang bị thêm kiến thức thôi:
Đưa hết tên các trang tính cần thiết vô mảng (đã khai báo trước)
Sau đó duyệt theo mảng chứa các tên trang này 1 cách lần lượt. & Bạn tự tiếp tục xem sao!
Thưa Thầy, Thầy cho em hỏi chút xíu ạ!
Giờ em muốn lấy máy móc ở sheet "May thi cong" để điền tương ứng vào các ngày của nội dung công việc ở "cột T" của các sheet còn lại (nha de xe, san be tong, ......)
Các máy móc được điền vào ô từng ngày ở cột T được ngăn bởi dấu "," và dấu cách
Thầy giúp em ạ! Em cám ơn Thầy
may thi cong.jpg
 

File đính kèm

  • lay may moc thi cong.xlsm
    134.1 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom