Giúp tạo code lấy dữ liệu từ nhiều file

Liên hệ QC

Lộc Nguyễn 93

Thành viên mới
Tham gia
4/4/22
Bài viết
11
Được thích
3
Xin chào mọi người,
Mình mới tập tành tìm hiểu về VBA, loay hoay mãi mấy hôm tìm hiểu nhưng vẫn chưa biết cách làm nên đành nhờ mọi người giúp rồi từ từ ngâm cứu ạ. Công việc của mình cần làm là tổng hợp khối lượng của các tổ đội theo các đợt thanh toán, nhưng mỗi đợt sẽ là một file riêng biệt nên làm thủ công rất mất thời gian và dễ nhầm lẫn. Cụ thể mình muốn tạo một nút bấm để chọn file chứa dữ liệu nguồn và sau đó sẽ copy dữ liệu từ file này sang file "BTHKL" theo đúng đợt của file đó (ảnh minh họa). Mình nghĩ sẽ cần phải dùng một hàm copy theo điều kiện vì các tên công tác có thể lặp lại (do có nhiều hạng mục) và số dòng giữa các file sẽ khác nhau (vì các đợt tiếp theo sẽ thêm dòng ở dưới tên công tác). Rất mong nhận được sự giúp đỡ của mọi người.
Xin cảm ơn, chúc mọi người một ngày tốt lành! 1650336264093.png
 

File đính kèm

  • BTHKL.xlsx
    431.9 KB · Đọc: 5
  • D1_DVH.xls
    875.5 KB · Đọc: 9
Bạn làm bằng tay thêm cái đợt 2 đi để biết "thêm dòng ở dưới tên công tác" khác thế nào so với đợt 1
 
Upvote 0
Bạn làm bằng tay thêm cái đợt 2 đi để biết "thêm dòng ở dưới tên công tác" khác thế nào so với đợt 1
Có nghĩa là ở file dữ liệu nguồn của các đợt sau sẽ bị thêm dòng tên đợt ấy ạ (ảnh gửi kèm). Bạn xem qua giúp mình file mới bên dưới nhé, file này có 2 đợt rồi ấy ạ1650448814933.png
 

File đính kèm

  • BTHKL.xlsm
    279.6 KB · Đọc: 4
  • D2_BQT.xls
    675.5 KB · Đọc: 5
Upvote 0
Upvote 0
Chừ hiểu rồi. Việc là không khó nhưng tôi chưa nghĩ ra giải thuật tốt nhất.
Hóa ra việc không dễ. Phải lập khóa chính cho từng dòng cả bảng nguồn lẫn bảng đích rồi theo đó mới tìm đến đúng công việc của từng hạng mục được.
Cái bảng của mấy ông kỹ thuật xây dựng xưa nay vẫn thế, không bao giờ đặt mã cho công việc. Chỗ nào cũng có cái tên đó, ví dụ Bê tông lót móng, đá 1x2, M150 nếu không có mã duy nhất thì biết chép vào chỗ nào. À mà sao gửi file mà khóa VBA he?

Bạn chạy thử file cho nhiều đợt xem.
 

File đính kèm

  • ChepDuToanVaoFileTong_Lộc Nguyễn 93.xlsm
    643.1 KB · Đọc: 9
Upvote 0
Một đặc trưng nữa của các bảng dự toán xây dựng, nhất là file .xls là name rác vô thiên lủng. Tôi dùng add-ins để xóa, phải mất mấy phút mới xóa xong.
 
Upvote 0
Hóa ra việc không dễ. Phải lập khóa chính cho từng dòng cả bảng nguồn lẫn bảng đích rồi theo đó mới tìm đến đúng công việc của từng hạng mục được.
Cái bảng của mấy ông kỹ thuật xây dựng xưa nay vẫn thế, không bao giờ đặt mã cho công việc. Chỗ nào cũng có cái tên đó, ví dụ Bê tông lót móng, đá 1x2, M150 nếu không có mã duy nhất thì biết chép vào chỗ nào. À mà sao gửi file mà khóa VBA he?

Bạn chạy thử file cho nhiều đợt xem.
Cảm ơn @Maika8008 nhiều lắm, code chạy rất ổn ạ! Nhưng có chút vấn đề là file nguồn và file đích thực tế có nhiều sheet, @Maika8008 có thể giúp mình thêm dòng code chọn sheet không ạ (mình có thể tự thay tên sheet lại, nhưng không biết phải thêm code như thế nào, đã thử thêm dòng Activesheet.select nhưng có vẻ không đúng ạ). Do file gốc có một số thông tin về giá trị nên mình không tiện public lên ạ

P/s: Bản thân mình cũng không biết là file ấy nó bị khóa, mà mình cũng không biết mã khóa là gì nữa (@$%@
 
Upvote 0
Cảm ơn @Maika8008 nhiều lắm, code chạy rất ổn ạ! Nhưng có chút vấn đề là file nguồn và file đích thực tế có nhiều sheet, @Maika8008 có thể giúp mình thêm dòng code chọn sheet không ạ (mình có thể tự thay tên sheet lại, nhưng không biết phải thêm code như thế nào, đã thử thêm dòng Activesheet.select nhưng có vẻ không đúng ạ). Do file gốc có một số thông tin về giá trị nên mình không tiện public lên ạ

P/s: Bản thân mình cũng không biết là file ấy nó bị khóa, mà mình cũng không biết mã khóa là gì nữa (@$%@
Ồ vậy là bạn dùng file ứng dụng của một ai đó viết trên Excel 2003 mà không biết à. Hồi xưa mấy ông bạn tôi làm xây dựng hay mua PM dự toán của 1 bên nào đó. Tất nhiên là họ cài mật khẩu để bảo vệ code, nhưng .xls phá mật khẩu quá dễ nên có cũng như không. Bạn ngạc nhiên vì file dự toán nhiều name à? Tôi là người vọc file dự toán nhiều lắm nên biết. Chúng dùng macro 4 tự sinh ra name rác không thể kiểm soát được. Cứ copy ra sheet mới mà name rác tự sinh.

Còn chuyện thêm lệnh chọn sheet thì được thôi. Tuy nhiên tôi nghĩ bạn nên thiết kế lại cách chạy sao chép sao cho ổn nhất.
 
Upvote 0
Ồ vậy là bạn dùng file ứng dụng của một ai đó viết trên Excel 2003 mà không biết à. Hồi xưa mấy ông bạn tôi làm xây dựng hay mua PM dự toán của 1 bên nào đó. Tất nhiên là họ cài mật khẩu để bảo vệ code, nhưng .xls phá mật khẩu quá dễ nên có cũng như không. Bạn ngạc nhiên vì file dự toán nhiều name à? Tôi là người vọc file dự toán nhiều lắm nên biết. Chúng dùng macro 4 tự sinh ra name rác không thể kiểm soát được. Cứ copy ra sheet mới mà name rác tự sinh.

Còn chuyện thêm lệnh chọn sheet thì được thôi. Tuy nhiên tôi nghĩ bạn nên thiết kế lại cách chạy sao chép sao cho ổn nhất.
Do file dữ liệu các đợt là của người khác gửi về cho mình, công việc của mình là tổng hợp và kiểm soát giá trị tổng nên trong các file này có chứa phần mềm nào không mình cũng không rõ. Hồi nào giờ mình không làm việc nhiều với excel, gần đây mới đổi việc nên bây giờ mới mò mẫm đây ạ. @Maika8008 có thể gợi ý rõ hơn ý cuối giúp mình được không ạ, mình đọc mà chưa rõ là nên thiết kế lại như thế nào cho ổn ạ. Một lần nữa cảm ơn @Maika8008 vì mình nhìn cái đoạn code lập mã cho từng dòng mà rối hết não, chắc còn phải ngâm cứu vài hôm nữa mới thông được đoạn đó :)
 
Upvote 0
Do file dữ liệu các đợt là của người khác gửi về cho mình, công việc của mình là tổng hợp và kiểm soát giá trị tổng nên trong các file này có chứa phần mềm nào không mình cũng không rõ. Hồi nào giờ mình không làm việc nhiều với excel, gần đây mới đổi việc nên bây giờ mới mò mẫm đây ạ. @Maika8008 có thể gợi ý rõ hơn ý cuối giúp mình được không ạ, mình đọc mà chưa rõ là nên thiết kế lại như thế nào cho ổn ạ. Một lần nữa cảm ơn @Maika8008 vì mình nhìn cái đoạn code lập mã cho từng dòng mà rối hết não, chắc còn phải ngâm cứu vài hôm nữa mới thông được đoạn đó :)
Tôi không biết file dữ liệu thực sự của bạn cấu trúc như thế nào nên mới nói như vậy. Nếu tôi biết trình tự cập nhật, cấu trúc nguyên thủy của file nguồn thì sẽ trả lời cho bạn được.

À, có 1 vấn đề trong code là khi chạy đợt 2 thì đợt 1 cũng chạy lại. Nếu số liệu nguồn đợt 1 bị thay đổi ngoài ý muốn thì không ổn
 
Upvote 0
Đây là file tổng hợp của mình, đại khái là ở các dự án sẽ gửi bảng khối lượng thi công thực tế của các tổ đội, thầu phụ (theo từng đợt) về cho mình, sau đó mình sẽ tổng hợp dữ liệu đó vào các sheet theo dõi của các tổ đội, thầu phụ tương ứng ở file "BTHKL" này. Trong file này sẽ có một sheet "TD THANH TOÁN" để mình theo dõi khối lượng thi công thực tế của dự án (một công tác có thể có nhiều tổ đội cùng làm nên mình phải làm sheet này để tổng hợp), phần này mình dùng hàm của excel để giải quyết. Cái khó là ở công tác đầu tiên - chuyển dữ liệu của các đợt vào trong file "BTHKL" thôi ạ! Không biết @Maika8008 có từng xem qua cách theo dõi nào tối ưu hơn có thể chia sẻ không ạ.
 

File đính kèm

  • BTHKL.xlsm
    2.5 MB · Đọc: 4
Upvote 0
Đây là file tổng hợp của mình, đại khái là ở các dự án sẽ gửi bảng khối lượng thi công thực tế của các tổ đội, thầu phụ (theo từng đợt) về cho mình, sau đó mình sẽ tổng hợp dữ liệu đó vào các sheet theo dõi của các tổ đội, thầu phụ tương ứng ở file "BTHKL" này. Trong file này sẽ có một sheet "TD THANH TOÁN" để mình theo dõi khối lượng thi công thực tế của dự án (một công tác có thể có nhiều tổ đội cùng làm nên mình phải làm sheet này để tổng hợp), phần này mình dùng hàm của excel để giải quyết. Cái khó là ở công tác đầu tiên - chuyển dữ liệu của các đợt vào trong file "BTHKL" thôi ạ! Không biết @Maika8008 có từng xem qua cách theo dõi nào tối ưu hơn có thể chia sẻ không ạ.
Vậy file nguồn do tổ đội gửi về sao phải có nhiều sheet? Chỉ cho phép 1 sheet thôi là đã là 1 việc quan trọng trong quy trình rồi đấy.
 
Upvote 0
Đã thêm các dòng code chỉ định tên sheet nguồn và đích trong code (có chú thích ở code)

Nếu cần chỉ định sheet khác, bạn có thể thay đổi thẳng tại code hoặc trỏ vào một cell nào đó có ghi tên sheet.
 

File đính kèm

  • ChepDuToanVaoFileTong_Lộc Nguyễn 93.xlsm
    644.6 KB · Đọc: 15
Upvote 0
Vậy file nguồn do tổ đội gửi về sao phải có nhiều sheet? Chỉ cho phép 1 sheet thôi là đã là 1 việc quan trọng trong quy trình rồi đấy.
file nguồn đó có thêm các sheet giá trị thanh toán và các bảng tính chi tiết, nó là form mẫu thuộc về quy trình công ty mình nên không thay đổi được :(
Đã thêm các dòng code chỉ định tên sheet nguồn và đích trong code (có chú thích ở code)

Nếu cần chỉ định sheet khác, bạn có thể thay đổi thẳng tại code hoặc trỏ vào một cell nào đó có ghi tên sheet.
Cảm ơn @Maika8008 đã hỗ trợ mình rất tận tình, mình sẽ từ từ ngâm cứu các đoạn code này. Chúc @Maika8008 sức khỏe và thành công! Một lần nữa mình xin cảm ơn :)
 
Upvote 0
file nguồn đó có thêm các sheet giá trị thanh toán và các bảng tính chi tiết, nó là form mẫu thuộc về quy trình công ty mình nên không thay đổi được :(

Cảm ơn @Maika8008 đã hỗ trợ mình rất tận tình, mình sẽ từ từ ngâm cứu các đoạn code này. Chúc @Maika8008 sức khỏe và thành công! Một lần nữa mình xin cảm ơn :)
Không có chi. Rất vui khi đã giải quyết được vấn đề của bạn.
 
Upvote 0
Không có chi. Rất vui khi đã giải quyết được vấn đề của bạn.
file nguồn đó có thêm các sheet giá trị thanh toán và các bảng tính chi tiết, nó là form mẫu thuộc về quy trình công ty mình nên không thay đổi được :(

Cảm ơn @Maika8008 đã hỗ trợ mình rất tận tình, mình sẽ từ từ ngâm cứu các đoạn code này. Chúc @Maika8008 sức khỏe và thành công! Một lần nữa mình xin cảm ơn :)
Bạn dùng có ổn ko bạn?
Mình bên mảng cơ điện. Cũng gặp nhiều khó khăn trong việc tổng hợp dữ liệu thanh toán các lần, các đợt.
Xin được giao lưu, học hỏi với bạn.
Tks!
 
Upvote 0
Bạn dùng có ổn ko bạn?
Mình bên mảng cơ điện. Cũng gặp nhiều khó khăn trong việc tổng hợp dữ liệu thanh toán các lần, các đợt.
Xin được giao lưu, học hỏi với bạn.
Tks!
Dùng rất ổn bạn ạ, chỉ có một vấn đề (như Maika8008 đã đề cập) là mỗi khi cập nhật các đợt sau nó cũng sẽ cập nhật luôn các đợt trước. Điều này dẫn đến các số liệu lũy kế của các file đợt sau yêu cầu phải chính xác để không bị sai về số liệu cuối cùng (cái số liệu quan trọng nhất mình cần). Mình thì đang dùng phương pháp thủ công để xử lý vấn đề này và đang nghiên cứu thêm để xử lý bằng code luôn.
 
Upvote 0
Hóa ra việc không dễ. Phải lập khóa chính cho từng dòng cả bảng nguồn lẫn bảng đích rồi theo đó mới tìm đến đúng công việc của từng hạng mục được.
Cái bảng của mấy ông kỹ thuật xây dựng xưa nay vẫn thế, không bao giờ đặt mã cho công việc. Chỗ nào cũng có cái tên đó, ví dụ Bê tông lót móng, đá 1x2, M150 nếu không có mã duy nhất thì biết chép vào chỗ nào. À mà sao gửi file mà khóa VBA he?

Bạn chạy thử file cho nhiều đợt xem.
Maika8008 giúp mình khắc phục việc "Định danh đầu mục công việc trong bảng tính"
Theo code hiện tại bạn chia sẻ, vẫn sảy ra hiện tượng trùng tên định danh. Cụ thể tại dòng 829-830; dòng 902-903 việc định danh vẫn không hiểu được là đầu việc 5.1 đã kết thúc.
Bạn có thể hướng dẫn cách thay đổi code sao cho khi gặp trường hợp như thế này.
Việc định danh tự động sẽ đưa về kết quả là
5.-5.2
5.-5.2-A
5.-5.2-A-A1
5.-5.2-A-A1
5.-5.2-A-A1-1
Mục đích là để định danh đầu việc trong bảng tính không bị trùng nhau.
Mong bạn giúp đỡ. Tks
1650948108775.png
Cái bảng của mấy ông kỹ thuật xây dựng xưa nay vẫn thế, không bao giờ đặt mã cho công việc. Chỗ nào cũng có cái tên đó, ví dụ Bê tông lót móng, đá 1x2, M150 nếu không có mã duy nhất thì biết chép vào chỗ nào. À mà sao gửi file mà khóa VBA he?

Bạn chạy thử file cho nhiều đợt xem.
 
Upvote 0
Dùng rất ổn bạn ạ, chỉ có một vấn đề (như Maika8008 đã đề cập) là mỗi khi cập nhật các đợt sau nó cũng sẽ cập nhật luôn các đợt trước. Điều này dẫn đến các số liệu lũy kế của các file đợt sau yêu cầu phải chính xác để không bị sai về số liệu cuối cùng (cái số liệu quan trọng nhất mình cần). Mình thì đang dùng phương pháp thủ công để xử lý vấn đề này và đang nghiên cứu thêm để xử lý bằng code luôn.
Chuyện có đợt 1 rồi thì không chạy lại nữa bạn nghiên cứu thêm vào đi. Tôi tính làm tiếp nhưng quên chuyện đó chứ không phải là không làm.
 
Upvote 0
Maika8008 giúp mình khắc phục việc "Định danh đầu mục công việc trong bảng tính"
Theo code hiện tại bạn chia sẻ, vẫn sảy ra hiện tượng trùng tên định danh. Cụ thể tại dòng 829-830; dòng 902-903 việc định danh vẫn không hiểu được là đầu việc 5.1 đã kết thúc.
Bạn có thể hướng dẫn cách thay đổi code sao cho khi gặp trường hợp như thế này.
Việc định danh tự động sẽ đưa về kết quả là
5.-5.2
5.-5.2-A
5.-5.2-A-A1
5.-5.2-A-A1
5.-5.2-A-A1-1
Mục đích là để định danh đầu việc trong bảng tính không bị trùng nhau.
Mong bạn giúp đỡ. Tks
View attachment 275029
Cái bảng của mấy ông kỹ thuật xây dựng xưa nay vẫn thế, không bao giờ đặt mã cho công việc. Chỗ nào cũng có cái tên đó, ví dụ Bê tông lót móng, đá 1x2, M150 nếu không có mã duy nhất thì biết chép vào chỗ nào. À mà sao gửi file mà khóa VBA he?

Bạn chạy thử file cho nhiều đợt xem.
@thanhtv Bạn test xem ...
 

File đính kèm

  • ChepDuToanVaoFileTong_Lộc Nguyễn 93.xlsm
    646.3 KB · Đọc: 5
Upvote 0
Web KT

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

Back
Top Bottom