Cập nhật dữ liệu từ file ĐƠN sang file TỔNG

Liên hệ QC

Bảy Dzõ

Ngu Excel nhất GPE
Tham gia
18/11/09
Bài viết
565
Được thích
1,361
Nghề nghiệp
Just for daily's rice
Mình có một vấn đề mong nhờ các anh/chị cao thủ GPE giúp đỡ giùm. Mình có 2 files: 1 file dùng để đánh giá cách làm việc của nhân viên và cho điểm theo tuần; 1 file dùng để tổng kết tất cả các lần đánh giá cho nhân viên đó.

Mong các anh/chị giúp mình code để sau khi nhập mọi thông tin đánh giá của nhân viên đó thì excel cập nhật vào từng file cho từng nhân viên. Vui lòng xem files đính kèm.

Ví dụ nếu thông tin trong file "Deployment Monthly Rating Criteria" là của nhân với MS 012345 thì cập nhật dữ liệu vào file "012345_Deployment Monthly Rating Criteria".

Mong được giúp đỡ. Chân thành cảm ơn.
 

File đính kèm

Anh thử giải pháp này xem có được không.
 

File đính kèm

Anh thử giải pháp này xem có được không.

cám ơn bạn dhn46 nhưng mình có vài vấn đề sau:
1. File bạn tải về chạy được nhưng kết quả lại ra ko chính xác. Mình cho 3 điểm nhưng file cập nhật thành 4 điểm.
2. Cho mình hỏi có cách nào ko cần tạo file TỔNG trước cho tất cả mọi nhân viên nhưng dựa trên mã số nhân viên của file ĐƠN và file mẫu sẵn mình có thể tự tạo ra file mới cho từng nhân viên (ví dụ: thay ms nhân viên thành 011111 thì excel tạo ra file 011111_Deployment Monthly Rating Criteria một cách tự động)
3. Nếu vấn đề số 2 có thể thì mình tiếp thêm là: file TỔNG tạo ra có thể nằm ở các folder khác nhau tuỳ theo sự chọn lựa của mình???

Cám ơn bạn đã bỏ thời gian ra nghiên cứu giùm mình.... Thân
 
cám ơn bạn dhn46 nhưng mình có vài vấn đề sau:
1. File bạn tải về chạy được nhưng kết quả lại ra ko chính xác. Mình cho 3 điểm nhưng file cập nhật thành 4 điểm.
2. Cho mình hỏi có cách nào ko cần tạo file TỔNG trước cho tất cả mọi nhân viên nhưng dựa trên mã số nhân viên của file ĐƠN và file mẫu sẵn mình có thể tự tạo ra file mới cho từng nhân viên (ví dụ: thay ms nhân viên thành 011111 thì excel tạo ra file 011111_Deployment Monthly Rating Criteria một cách tự động)
3. Nếu vấn đề số 2 có thể thì mình tiếp thêm là: file TỔNG tạo ra có thể nằm ở các folder khác nhau tuỳ theo sự chọn lựa của mình???

Cám ơn bạn đã bỏ thời gian ra nghiên cứu giùm mình.... Thân
Anh thử lại File nhé, do em không kiểm tra trước nên có lệch 1 so với điểm chấm.
- Vấn đề 2: làm được anh ah
- Vấn đề 3: làm được với điều kiện anh có ô tham chiếu địa chỉ thư mục chứa File tổng

Thầy Ndu lấp ló => giải pháp sẽ tới nhanh
 

File đính kèm

Anh thử lại File nhé, do em không kiểm tra trước nên có lệch 1 so với điểm chấm.
- Vấn đề 2: làm được anh ah
- Vấn đề 3: làm được với điều kiện anh có ô tham chiếu địa chỉ thư mục chứa File tổng

Thầy Ndu lấp ló => giải pháp sẽ tới nhanh

Cám ơn bạn dhn46. Phần 1 đúng như ý mình muốn. Nhưng có thể thêm 1 phần nho nhỏ này thì sẽ đẹp hơn. File TỔNG chỉ cho nhập dữ liệu với điều kiện ngày không được trùng nhau hoặc nếu user chọn ngày trùng thì cập nhật dữ liệu chứ ko thêm dòng vào.

Sẵn nhờ dhn46 giúp vấn đề 2 và 3. Sau đó bạn chỉ giúp mình cách chỉnh địa chỉ thư mục như thế nào rồi mình sẽ áp dụng theo. Thú thật code là mình còn thua con bò luôn á.... hix hix đang cố gắng học mà việc làm thì túi bụi. Cám ơn bạn nhiều lắm. Thân.
 
Anh thử File này nhé
Cấu trúc có thay đổi 1 chút.
1/ Có sheet Address để tạo đường dẫn thư mục như mong muốn
2/ Tự động tạo File theo số EmpID, nếu chưa có File khai báo tại sheet Address thì sẽ tạo File tại thư mục chứa File tổng hợp. Sau đó anh có thể di chuyển và khai báo lại đường dẫn, nếu đã tồn tại File theo đường dẫn thì tiến hành Update
3/ Tìm kiếm và Update theo ngày trong File tổng

Anh test và phản hồi nha.
 

File đính kèm

Anh thử File này nhé
Cấu trúc có thay đổi 1 chút.
1/ Có sheet Address để tạo đường dẫn thư mục như mong muốn
2/ Tự động tạo File theo số EmpID, nếu chưa có File khai báo tại sheet Address thì sẽ tạo File tại thư mục chứa File tổng hợp. Sau đó anh có thể di chuyển và khai báo lại đường dẫn, nếu đã tồn tại File theo đường dẫn thì tiến hành Update
3/ Tìm kiếm và Update theo ngày trong File tổng

Anh test và phản hồi nha.

Mình đã test và như sau:
1. File chưa tồn tại trong cùng thư mục với file chính thì chạy tốt.
2. Mình thử đặt đường dẫn trong sheet address với thư mục trống chưa có file thì báo lỗi file không tồn tại. Nếu đã có file thì chạy tốt đó bạn.

Bạn coi giúp giùm mình nhé.... Làm phiền bạn quá. Thân
 
Mình đã test và như sau:
1. File chưa tồn tại trong cùng thư mục với file chính thì chạy tốt.
2. Mình thử đặt đường dẫn trong sheet address với thư mục trống chưa có file thì báo lỗi file không tồn tại. Nếu đã có file thì chạy tốt đó bạn.

Bạn coi giúp giùm mình nhé.... Làm phiền bạn quá. Thân

Vâng đúng là em lập trình như vậy, khi anh chưa có file thì anh cứ xóa tên file ấy trong Sheet Address, chương trình sẽ tạo 1 File như ý trong thư mục chứa file tổng rồi sau đó mới chuyển File và thay đường dẫn.
 
Vâng đúng là em lập trình như vậy, khi anh chưa có file thì anh cứ xóa tên file ấy trong Sheet Address, chương trình sẽ tạo 1 File như ý trong thư mục chứa file tổng rồi sau đó mới chuyển File và thay đường dẫn.

Mình thử đổi đường dẫn ra ngoài khác thư mục đó thì bị báo lỗi "file ko tồn tại" và code ko chạy được. Mình đã thử nhiều lần mà vẫn vậy. Nếu mình tạo file trước tại thư mục đó sau đó copy file đó qua thư mục mới mà mình muốn lưu thì code chạy tốt. Nhờ bạn coi giúp. Thân.
 
Mình thử đổi đường dẫn ra ngoài khác thư mục đó thì bị báo lỗi "file ko tồn tại" và code ko chạy được. Mình đã thử nhiều lần mà vẫn vậy. Nếu mình tạo file trước tại thư mục đó sau đó copy file đó qua thư mục mới mà mình muốn lưu thì code chạy tốt. Nhờ bạn coi giúp. Thân.
Vậy có phải anh muốn tạo đường dẫn trước khi tạo File?

- Nguyên tắc của File bài #6 là: kiểm tra xem trong List có File hay chưa, nếu không có thì tạo File, nếu có tiếp tục kiểm tra sự tồn tại của File nên a đổi đường dẫn thì Code không chạy là đúng. Nếu không kiểm tra sự tồn tại của File sẽ dẫn tới hiện tượng ghi đè, mất dữ liệu.
- Anh đổi đường dẫn lúc nào? Lúc đã có File hay đổi tên trong File chính?
 
Lần chỉnh sửa cuối:
Vậy có phải anh muốn tạo đường dẫn trước khi tạo File?

- Nguyên tắc của File bài #6 là: kiểm tra xem trong List có File hay chưa, nếu không có thì tạo File, nếu có tiếp tục kiểm tra sự tồn tại của File nên a đổi đường dẫn thì Code không chạy là đúng. Nếu không kiểm tra sự tồn tại của File sẽ dẫn tới hiện tượng ghi đè, mất dữ liệu.
- Anh đổi đường dẫn lúc nào? Lúc đã có File hay đổi tên trong File chính?

Mình xin lỗi trước vì có thể có sự hiểu lầm giữa bạn và mình cho nên làm tốn thời gian của bạn. Mình xin giải thích như sau:
Ý mình muốn là khi tạo đường dẫn trước trong sheet address thì việc code sẽ kiểm tra xem trong thư mục mà mình đã khai báo có tồn tại file đó? Nếu chưa thì sẽ tạo file mới và cập nhật dữ liệu. Nếu đã tồn tại file đó thì code sẽ cập nhật với dữ liệu ko trùng lắp. Ghi chú: mình đang nói về file nằm ngoài thư mục hiện tại chứa file chính. Nếu cùng thư mục thì file bạn giúp mình đã đáp ứng trên mức yêu cầu.

Có thể mình ko hiểu rõ sự chỉ dẫn của bạn nên áp dụng sai? Nhưng thật sự mình đã test vài lần vẫn ko được vấn đề đó. thân.
 
Anh kiểm tra file nhé, hôm nay vẫn phải làm nên phản hồi anh chậm trễ. Việc giúp anh viết đoạn code cũng giúp em học them được nhiều, nếu chưa vừa ý anh cứ yêu cầu.
 

File đính kèm

Anh kiểm tra file nhé, hôm nay vẫn phải làm nên phản hồi anh chậm trễ. Việc giúp anh viết đoạn code cũng giúp em học them được nhiều, nếu chưa vừa ý anh cứ yêu cầu.

Trên cả tuyệt vời và nó đã đúng ý mình muốn. Cảm ơn bạn rất nhiều vì đã bỏ công lẫn thời gian giúp mình nhé. Chúc bạn cuối tuần vui vẻ. Thân
 
Dựa trên phần code của bạn dhn46 giúp mình thì mình có thay đổi và thêm thắt một chút. Giờ nó lại phát sinh ra điều mới mong dhn46 và mọi người giúp giùm. Hiện tại code đang xét điều kiện dựa vào ngày (DATE) để cập nhật dữ liệu, nay mình thêm vào phần username của người nhập và muốn rằng code sẽ xét điều kiện như sau:
1. Nếu ngày trùng và username cũng trùng --> chỉ cập nhật thông tin trên cùng hàng
2. Nếu ngày trùng và username khác --> thêm dòng dữ liệu phía dưới hàng trên.

Sẵn tiện cho mình hỏi thêm là sao mình cố gắng đưa code vào để kẻ khung nếu có dữ liệu mà nó ko chạy được? Mong các anh chị giúp đỡ. Thân
 

File đính kèm

Anh có thể nói rõ thêm 1 số điểm được không?
1/ User là cái EmpID hay là cái nào?
2/ Code file trước cũng dựa trên ngày tháng và EmpID để truy xuất dữ liệu, nếu có ngày chỉ cập nhật, không có thì thêm dòng. Lần này là thay đổi mục nào vậy anh?
 
Anh có thể nói rõ thêm 1 số điểm được không?
1/ User là cái EmpID hay là cái nào?
2/ Code file trước cũng dựa trên ngày tháng và EmpID để truy xuất dữ liệu, nếu có ngày chỉ cập nhật, không có thì thêm dòng. Lần này là thay đổi mục nào vậy anh?

Xin lỗi vì nãy giờ mình mới đi họp về, trong bảng code đó mình có lấy thêm cái Windows username để vào để xem rằng người nào chính là người đánh giá cho nhân viên đó. Cho nên mình muốn nói user ở đấy chính là windows username của người đánh giá (Recorded By). Em cứ chạy thử thì sẽ hiểu ý mình muốn. Cám ơn dhn nhiều
 
Chỗ em không có Excel 2007 trở lên nên không test được, anh thử thay thế đoạn Code từ[With FileToOpen
..........
End With[/code] bằng đoạn code sau
Mã:
    With FileToOpen
        'Find the date in the target file
        ActiveWorkbook.Worksheets(1).Unprotect ("smiles")
        Set Fdate = Worksheets(1).[B2:B65536] _
                    .Find(Dt, LookIn:=xlFormulas, LookAt:=xlWhole)
        If Fdate Is Nothing Then
            'If not Exists date then add new line
            Set vTarget = Worksheets(1).[A65536].End(3)
            vTarget.Offset(1, 0) = Val(vTarget) + 1
            vTarget.Offset(1, 1) = Dt
            vTarget.Offset(1, 2) = CustomerService
            vTarget.Offset(1, 3) = BusinessProcess
            vTarget.Offset(1, 4) = Compliance
            vTarget.Offset(1, 5) = ProfessionalApproach
            vTarget.Offset(1, 6) = LabourEfficiencies
            vTarget.Offset(1, 7) = (CustomerService + BusinessProcess + Compliance + ProfessionalApproach + LabourEfficiencies) / 5
            vTarget.Offset(1, 8) = user
        Else
            If Fdate.Offset(0, 1) <> user Then
                'If exists date then Update
                'If not User
                Fdate.Offset(0, 1) = CustomerService
                Fdate.Offset(0, 2) = BusinessProcess
                Fdate.Offset(0, 3) = Compliance
                Fdate.Offset(0, 4) = ProfessionalApproach
                Fdate.Offset(0, 5) = LabourEfficiencies
                Fdate.Offset(0, 6) = (CustomerService + BusinessProcess + Compliance + ProfessionalApproach + LabourEfficiencies) / 5
                Fdate.Offset(0, 7) = user
            Else
                Set vTarget = Worksheets(1).[A65536].End(3)
                vTarget.Offset(1, 0) = Val(vTarget) + 1
                vTarget.Offset(1, 1) = Dt
                vTarget.Offset(1, 2) = CustomerService
                vTarget.Offset(1, 3) = BusinessProcess
                vTarget.Offset(1, 4) = Compliance
                vTarget.Offset(1, 5) = ProfessionalApproach
                vTarget.Offset(1, 6) = LabourEfficiencies
                vTarget.Offset(1, 7) = (CustomerService + BusinessProcess + Compliance + ProfessionalApproach + LabourEfficiencies) / 5
        End If
        ActiveWorkbook.UsedRange.Border.LineStyle = xlThin
        Columns("A:I").EntireColumn.AutoFit
        Columns("A:I").HorizontalAlignment = xlCenter
        ActiveWorkbook.Worksheets(1).Protect ("smiles")
        .Close SaveChanges:=True
    End With
Anh Bảy tiến bộ Code nhanh thế, vận dung rất khéo.
 
Chỗ em không có Excel 2007 trở lên nên không test được, anh thử thay thế đoạn Code từ[With FileToOpen
..........
End With[/code] bằng đoạn code sau
Mã:
    With FileToOpen
        'Find the date in the target file
        ActiveWorkbook.Worksheets(1).Unprotect ("smiles")
        Set Fdate = Worksheets(1).[B2:B65536] _
                    .Find(Dt, LookIn:=xlFormulas, LookAt:=xlWhole)
        If Fdate Is Nothing Then
            'If not Exists date then add new line
            Set vTarget = Worksheets(1).[A65536].End(3)
            vTarget.Offset(1, 0) = Val(vTarget) + 1
            vTarget.Offset(1, 1) = Dt
            vTarget.Offset(1, 2) = CustomerService
            vTarget.Offset(1, 3) = BusinessProcess
            vTarget.Offset(1, 4) = Compliance
            vTarget.Offset(1, 5) = ProfessionalApproach
            vTarget.Offset(1, 6) = LabourEfficiencies
            vTarget.Offset(1, 7) = (CustomerService + BusinessProcess + Compliance + ProfessionalApproach + LabourEfficiencies) / 5
            vTarget.Offset(1, 8) = user
        Else
            If Fdate.Offset(0, 1) <> user Then
                'If exists date then Update
                'If not User
                Fdate.Offset(0, 1) = CustomerService
                Fdate.Offset(0, 2) = BusinessProcess
                Fdate.Offset(0, 3) = Compliance
                Fdate.Offset(0, 4) = ProfessionalApproach
                Fdate.Offset(0, 5) = LabourEfficiencies
                Fdate.Offset(0, 6) = (CustomerService + BusinessProcess + Compliance + ProfessionalApproach + LabourEfficiencies) / 5
                Fdate.Offset(0, 7) = user
            Else
                Set vTarget = Worksheets(1).[A65536].End(3)
                vTarget.Offset(1, 0) = Val(vTarget) + 1
                vTarget.Offset(1, 1) = Dt
                vTarget.Offset(1, 2) = CustomerService
                vTarget.Offset(1, 3) = BusinessProcess
                vTarget.Offset(1, 4) = Compliance
                vTarget.Offset(1, 5) = ProfessionalApproach
                vTarget.Offset(1, 6) = LabourEfficiencies
                vTarget.Offset(1, 7) = (CustomerService + BusinessProcess + Compliance + ProfessionalApproach + LabourEfficiencies) / 5
        End If
        ActiveWorkbook.UsedRange.Border.LineStyle = xlThin
        Columns("A:I").EntireColumn.AutoFit
        Columns("A:I").HorizontalAlignment = xlCenter
        ActiveWorkbook.Worksheets(1).Protect ("smiles")
        .Close SaveChanges:=True
    End With
Anh Bảy tiến bộ Code nhanh thế, vận dung rất khéo.

Cám ơn em đã khen, anh cũng ráng tự học từ những gì có được trên GPE. Về đoạn code trên anh thấy có With nhưng khi đưa vào thì báo là "End With without With" em ah.
 
Cám ơn em đã khen, anh cũng ráng tự học từ những gì có được trên GPE. Về đoạn code trên anh thấy có With nhưng khi đưa vào thì báo là "End With without With" em ah.
Anh xóa toàn bộ từ chỗ
Mã:
With FileToOpen
....
End With[Code]
Bằng đoạn trên, em chỉ sửa phần trong With...End With thôi. Thử nhiều, thay nhiều, vooc nhiều lại sớm thành cao thủ anh nhỉ?
 
Anh xóa toàn bộ từ chỗ
Mã:
With FileToOpen
....
End With[Code]
Bằng đoạn trên, em chỉ sửa phần trong With...End With thôi. Thử nhiều, thay nhiều, vooc nhiều lại sớm thành cao thủ anh nhỉ?[/QUOTE]

Mình đã cố gắng thử như ý của em nhưng vẫn ko được, mình chuyển sang 2003 cho em xem thử. Mình thì chẳng mong trở thành cao thủ chỉ cố gắng hết mình một ngày nào đó mình có thể tự lực cánh sinh trong công việc của mình nhờ vào VBA hihi chắc ngày đó còn khá xa... Cám ơn em.
 

File đính kèm

Web KT

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

Back
Top Bottom