Code VBA ghi đè dữ liệu cũ

Blue Softs Liên hệ QC

queluatb

Thành viên thường trực
Tham gia
17/1/11
Bài viết
293
Được thích
34
Em xin nhờ các thầy, anh chị giúp đỡ em code vba thay thế vào dữ liệu cũ
em có Sheet1 là bảng chấm công (BCC) sau khi tạo BCC xong e sẽ copy sang Sheet2(Data_BCC), nhưng trong quá trình lập BCC có tháng sẽ phát sinh phải sửa lại BCC của từng người của từng bộ phận, sau khi sửa lại có thể thêm người mới hoặc có người ở bộ phận này chuyển bộ phận khác hoặc nghỉ việc, và ngày công có thể tăng hoặc giảm, sau khi sửa xong em muốn chuyển dữ liệu vừa sửa sang lại sheet2 thay thế vào dữ liệu cũ đã có. Ở đây có thể em phải sửa lại tháng bất kỳ chứ không phải cố định tháng nào cả
Em gửi file mong các thầy và anh chị xem giúp đỡ cho em
Em xin cám ơn
 

File đính kèm

  • BCC.xlsm
    194.9 KB · Đọc: 11

quanluu

Thành viên gắn bó
Tham gia
11/4/13
Bài viết
2,139
Được thích
1,242
Cái này bạn dùng ngày-tháng và tên làm bộ key để dò tìm và cập nhật thôi. Của bạn không có mã nên sẽ có lỗi nếu tên trùng nhau.
 
Upvote 0

queluatb

Thành viên thường trực
Tham gia
17/1/11
Bài viết
293
Được thích
34
mọi người xem giúp e với
 
Upvote 0

CHAOQUAY

Thành viên gắn bó
Tham gia
24/8/18
Bài viết
1,681
Được thích
1,950
Em xin nhờ các thầy, anh chị giúp đỡ em code vba thay thế vào dữ liệu cũ
em có Sheet1 là bảng chấm công (BCC) sau khi tạo BCC xong e sẽ copy sang Sheet2(Data_BCC), nhưng trong quá trình lập BCC có tháng sẽ phát sinh phải sửa lại BCC của từng người của từng bộ phận, sau khi sửa lại có thể thêm người mới hoặc có người ở bộ phận này chuyển bộ phận khác hoặc nghỉ việc, và ngày công có thể tăng hoặc giảm, sau khi sửa xong em muốn chuyển dữ liệu vừa sửa sang lại sheet2 thay thế vào dữ liệu cũ đã có. Ở đây có thể em phải sửa lại tháng bất kỳ chứ không phải cố định tháng nào cả
Em gửi file mong các thầy và anh chị xem giúp đỡ cho em
Em xin cám ơn
..............................................
Mã:
Option Explicit

Sub abcd()
Dim bangCC
Dim bangDC
Dim rws, cls
Dim kq
Dim i, j, k, x, z, t
bangCC = Sheet1.Range("A8", Sheet1.Range("AL" & Rows.Count).End(xlUp))
t = bangCC(1, 1)
bangDC = Sheet2.Range("A8", Sheet2.Range("AL" & Rows.Count).End(xlUp))
rws = UBound(bangDC)
cls = UBound(bangDC, 2)
ReDim kq(1 To rws * 3, 1 To cls)
For i = 1 To rws
    If bangDC(i, 1) = t Then
        If z = 0 Then
            For x = 1 To UBound(bangCC)
                k = k + 1
                For j = 1 To cls
                    kq(k, j) = bangCC(x, j)
                Next j
            Next x
            z = 1
        End If
    Else
        k = k + 1
        For j = 1 To cls
            kq(k, j) = bangDC(i, j)
        Next j
    End If
Next i
With Sheet3
    .UsedRange.Clear
    .Range("A8").Resize(k, cls) = kq
End With
End Sub
 
Upvote 0

HUONGHCKT

Thành viên thường trực
Tham gia
30/8/12
Bài viết
347
Được thích
456
Em xin nhờ các thầy, anh chị giúp đỡ em code vba thay thế vào dữ liệu cũ
em có Sheet1 là bảng chấm công (BCC) sau khi tạo BCC xong e sẽ copy sang Sheet2(Data_BCC), nhưng trong quá trình lập BCC có tháng sẽ phát sinh phải sửa lại BCC của từng người của từng bộ phận, sau khi sửa lại có thể thêm người mới hoặc có người ở bộ phận này chuyển bộ phận khác hoặc nghỉ việc, và ngày công có thể tăng hoặc giảm, sau khi sửa xong em muốn chuyển dữ liệu vừa sửa sang lại sheet2 thay thế vào dữ liệu cũ đã có. Ở đây có thể em phải sửa lại tháng bất kỳ chứ không phải cố định tháng nào cả
Em gửi file mong các thầy và anh chị xem giúp đỡ cho em
Em xin cám ơn
Thêm một cách cho bạn rộng đường lựa chọn'
Khi bạn nhấn nút nhập dữ liệu:
Nếu : + dữ liệu mới thì sẽ được nhập xuống các dòng cuối cùng của sh Data_BCC (theo Sub Copy_T2 bạn đã viết code)
+ nếu là dữ liệu đã có ngày trong Sh Data (trường hợp bạn sửa lại dữ liệu- và cập nhập dữ liệu sửa ấy vào Sh Data) thì code sẽ hỏi là có muốn sửa không? nếu có thì sửa-nếu No thì bỏ qua (Dữ liễu bạn sửa có thể ít hoặc nhiều dòng hơn dữ liệu cũ thì khi cập nhật cũng sẽ đầy đủ như dữ liệu đã sửa.
Bài này bạn có thể nhập dữ liệu của 1 vài năm (nếu trường ngày tháng năm được bố trí chuẩn- Phù hợp với hàm tìm kiếm) - có thể phát triển để xem lại- sửa-xóa- làm mới....
 

File đính kèm

  • BCC.xlsm
    164.3 KB · Đọc: 3
Upvote 0

queluatb

Thành viên thường trực
Tham gia
17/1/11
Bài viết
293
Được thích
34
Thêm một cách cho bạn rộng đường lựa chọn'
Khi bạn nhấn nút nhập dữ liệu:
Nếu : + dữ liệu mới thì sẽ được nhập xuống các dòng cuối cùng của sh Data_BCC (theo Sub Copy_T2 bạn đã viết code)
+ nếu là dữ liệu đã có ngày trong Sh Data (trường hợp bạn sửa lại dữ liệu- và cập nhập dữ liệu sửa ấy vào Sh Data) thì code sẽ hỏi là có muốn sửa không? nếu có thì sửa-nếu No thì bỏ qua (Dữ liễu bạn sửa có thể ít hoặc nhiều dòng hơn dữ liệu cũ thì khi cập nhật cũng sẽ đầy đủ như dữ liệu đã sửa.
Bài này bạn có thể nhập dữ liệu của 1 vài năm (nếu trường ngày tháng năm được bố trí chuẩn- Phù hợp với hàm tìm kiếm) - có thể phát triển để xem lại- sửa-xóa- làm mới....
nhờ bạn xem lại giúp khi ấn chọn nhập giữ liệu chuyển từ BCC sang Data_BCC luôn bị mất đi dòng đầu tiên trong danh sách, như file ở đây bạn code giúp mình của tháng 2 khi chuyển sang Data_BCC bị mất người Nguyễn Văn 1
Bài đã được tự động gộp:

..............................................
Mã:
Option Explicit

Sub abcd()
Dim bangCC
Dim bangDC
Dim rws, cls
Dim kq
Dim i, j, k, x, z, t
bangCC = Sheet1.Range("A8", Sheet1.Range("AL" & Rows.Count).End(xlUp))
t = bangCC(1, 1)
bangDC = Sheet2.Range("A8", Sheet2.Range("AL" & Rows.Count).End(xlUp))
rws = UBound(bangDC)
cls = UBound(bangDC, 2)
ReDim kq(1 To rws * 3, 1 To cls)
For i = 1 To rws
    If bangDC(i, 1) = t Then
        If z = 0 Then
            For x = 1 To UBound(bangCC)
                k = k + 1
                For j = 1 To cls
                    kq(k, j) = bangCC(x, j)
                Next j
            Next x
            z = 1
        End If
    Else
        k = k + 1
        For j = 1 To cls
            kq(k, j) = bangDC(i, j)
        Next j
    End If
Next i
With Sheet3
    .UsedRange.Clear
    .Range("A8").Resize(k, cls) = kq
End With
End Sub
cám ơn bạn có lẽ mình nêu chưa hết ý, sheet 2 của mình sẽ update giữ liệu mới khi sửa lại tháng nào đó trên BCC, ở file mình thêm sheet ketquamongmuon, là muốn nói mình đang sửa lại tháng 2, sẽ update lại vào Data_BCC như ketquamongmuon
 
Lần chỉnh sửa cuối:
Upvote 0

CHAOQUAY

Thành viên gắn bó
Tham gia
24/8/18
Bài viết
1,681
Được thích
1,950
nhờ bạn xem lại giúp khi ấn chọn nhập giữ liệu chuyển từ BCC sang Data_BCC luôn bị mất đi dòng đầu tiên trong danh sách, như file ở đây bạn code giúp mình của tháng 2 khi chuyển sang Data_BCC bị mất người Nguyễn Văn 1
Bài đã được tự động gộp:


cám ơn bạn có lẽ mình nêu chưa hết ý, sheet 2 của mình sẽ update giữ liệu mới khi sửa lại tháng nào đó trên BCC, ở file mình thêm sheet ketquamongmuon, là muốn nói mình đang sửa lại tháng 2, sẽ update lại vào Data_BCC như ketquamongmuon
code bài trên không cập nhật à bạn?
 
Upvote 0

HUONGHCKT

Thành viên thường trực
Tham gia
30/8/12
Bài viết
347
Được thích
456
nhờ bạn xem lại giúp khi ấn chọn nhập giữ liệu chuyển từ BCC sang Data_BCC luôn bị mất đi dòng đầu tiên trong danh sách, như file ở đây bạn code giúp mình của tháng 2 khi chuyển sang Data_BCC bị mất người Nguyễn Văn 1
Bài đã được tự động gộp:
Do code Copy_T2 của bạn lấy không đủ dòng bạn dùng CurentRegion và sau đó For i = 3 ....sau đó nữa là KQ(i-2,j)...
mình đã sửa lại code ở Sub Copy_T2 rồi và chạy êm. nhác quá bạn thêm Application. gì gì đó cho không chớp màn hình nhé
 

File đính kèm

  • BCC.xlsm
    166.5 KB · Đọc: 7
Upvote 0

queluatb

Thành viên thường trực
Tham gia
17/1/11
Bài viết
293
Được thích
34
Do code Copy_T2 của bạn lấy không đủ dòng bạn dùng CurentRegion và sau đó For i = 3 ....sau đó nữa là KQ(i-2,j)...
mình đã sửa lại code ở Sub Copy_T2 rồi và chạy êm. nhác quá bạn thêm Application. gì gì đó cho không chớp màn hình nhé
Cám ơn bạn nhiều mình xem có chỗ nào chưa hiểu rất mong bạn giúp đỡ
 
Upvote 0
Top Bottom