Cách vlookup dữ liệu trên nhiều sheet khác nhau

Liên hệ QC

ngatran08

Thành viên chính thức
Tham gia
23/5/12
Bài viết
73
Được thích
7
Nghề nghiệp
Sales admin
Chào ACE! Em cần nhờ ACE giúp đỡ với file như sau:
- Ở sheet "Tổng hợp các đơn giao theo ngày" em cần lấy tên các đơn hàng đã được giao cho từng NV theo các sheet con, nếu em vlookup thủ công thì có ngày tới hơn 1000 đơn được giao ra và có giao cho hơn 40 nhân viên thì rất mất thời gian (mà tiến tới công ty sẽ còn mở rộng nhân viên nhiều hơn con số 40 nữa).
- Em đã lên mạng search vlookup theo nhiều sheet và áp dụng nhưng có lẽ do còn non nên không thành công và có kết quả như mong đợi.
Em nhờ các ACE chỉ giúp em theo file với ạ. Em xin cảm ơn mọi người.
 

File đính kèm

  • Bang ke giao hang ngay 20.10.2021 - GPEX.xlsx
    1.9 MB · Đọc: 15
Tôi không biết trình tự công việc của bạn thế nào và các Sh trong file giả định này có nằm trong 1 file lớn khác nữa không: nhưng theo thiển ý của tôi bạn nên kết cấu lại thông tin ở các sh
1/ nên có 1 sh DANH SACH NV, danh sách khách hàng, tên hàng hóa để lưu nhân viên, khách hàng, hàng hóa không thể trùng nhau . Ví dụ trong Sh đó có Mã nhân viên phụ trách khu vực (VD: Mã NV =LHL01 ;Tên NV =Lê Hải Long; KV phụ trách = Chợ Si) Để không phải Sh nào từ dòng 935 cũng là 1 cái danh sách NV ấy và thuận tiện khi sau này cần lấy dữ liệu, quá trình nhập liệu sẽ tránh được những sai sót đáng tiếc(thừa ký tự trắng...)

2/Nên bố trí 1Sh Để tổng hợp (Sh Datasabe ) cho tất cả các đơn hàng( đã giao và chưa giao) mà không cần thiết phải lập các sh theo khu vực. Từ sh đó có thể dùng VBA hoặc công thức để lọc ra các bản ghi theo các điều kiện ( ví dụ: lọc ra những bản ghi của đơn hàng đã giao (hoặc chưa giao) trong ngày (hoặc từ ngày.... đến ngày) của khu vực Hà nội 1 (nếu khu vực này do 1 NV đảm nhiệm),hoặc thêm điều kiện do nhân viên A đảm nhiệm là điều hoàn toàn cỏ thể thực hiện được dựa trên các trường (ngày tháng năm-mã KH, Mã NV, Mã HH...)
 
Tôi không biết trình tự công việc của bạn thế nào và các Sh trong file giả định này có nằm trong 1 file lớn khác nữa không: nhưng theo thiển ý của tôi bạn nên kết cấu lại thông tin ở các sh
1/ nên có 1 sh DANH SACH NV, danh sách khách hàng, tên hàng hóa để lưu nhân viên, khách hàng, hàng hóa không thể trùng nhau . Ví dụ trong Sh đó có Mã nhân viên phụ trách khu vực (VD: Mã NV =LHL01 ;Tên NV =Lê Hải Long; KV phụ trách = Chợ Si) Để không phải Sh nào từ dòng 935 cũng là 1 cái danh sách NV ấy và thuận tiện khi sau này cần lấy dữ liệu, quá trình nhập liệu sẽ tránh được những sai sót đáng tiếc(thừa ký tự trắng...)

2/Nên bố trí 1Sh Để tổng hợp (Sh Datasabe ) cho tất cả các đơn hàng( đã giao và chưa giao) mà không cần thiết phải lập các sh theo khu vực. Từ sh đó có thể dùng VBA hoặc công thức để lọc ra các bản ghi theo các điều kiện ( ví dụ: lọc ra những bản ghi của đơn hàng đã giao (hoặc chưa giao) trong ngày (hoặc từ ngày.... đến ngày) của khu vực Hà nội 1 (nếu khu vực này do 1 NV đảm nhiệm),hoặc thêm điều kiện do nhân viên A đảm nhiệm là điều hoàn toàn cỏ thể thực hiện được dựa trên các trường (ngày tháng năm-mã KH, Mã NV, Mã HH...)
file này không theo ý của mình được, mà của bộ phận khác gửi tới và mỗi ngày là 1 file khác nhau nhưng nội dung mình đều phải làm thế. Mình làm báo cáo trên file khác. Số dòng trên file dữ liệu đó cũng thay đổi theo ngày, ngày ít đơn là số dòng đó hoặc ít hơn - nhưng có khi cũng nhiều hơn nữa.
 
file này không theo ý của mình được, mà của bộ phận khác gửi tới và mỗi ngày là 1 file khác nhau nhưng nội dung mình đều phải làm thế. Mình làm báo cáo trên file khác. Số dòng trên file dữ liệu đó cũng thay đổi theo ngày, ngày ít đơn là số dòng đó hoặc ít hơn - nhưng có khi cũng nhiều hơn nữa.
mỗi ngày một file của bộ phận khác gửi đến có cấu trúc giống hay khác file bạn up lên?
Còn bạn làm báo cáo trên 1 file khác và được tổng hợp lại từ file họ gửi lên?
Việc tổng hợp này hoàn toàn có thể thực hiện được thông qua các code của VBA, hoặc cao cấp hơn là power query, SQL, ADO.. khi đã tổng hợp (bằng VBA) chẳng hạn thì code sẽ tìm đến file folder được chỉ định lấy số liệu tổng họp lại và gán xuống file/sheet theo đúng ý định cho dù file dữ liệu kia có nhiều dòng hay ít dòng.
Nói như vậy là bạn chỉ cần làm code 1 lần vào file báo cáo, các lần sau khi nhận được file dữ liệu bạn chỉ cần nhấn nút và có được kết quả mong muốn.
Trên diễn đàn này có rất nhiều code lấy dữ liệu từ file khác trên máy Offline hoặc online (trên mạngkể cả mạng Lan, trong các trang Web) mà không cần mở file. Bạn có thể tham khảo.
 
mỗi ngày một file của bộ phận khác gửi đến có cấu trúc giống hay khác file bạn up lên?
Còn bạn làm báo cáo trên 1 file khác và được tổng hợp lại từ file họ gửi lên?
Việc tổng hợp này hoàn toàn có thể thực hiện được thông qua các code của VBA, hoặc cao cấp hơn là power query, SQL, ADO.. khi đã tổng hợp (bằng VBA) chẳng hạn thì code sẽ tìm đến file folder được chỉ định lấy số liệu tổng họp lại và gán xuống file/sheet theo đúng ý định cho dù file dữ liệu kia có nhiều dòng hay ít dòng.
Nói như vậy là bạn chỉ cần làm code 1 lần vào file báo cáo, các lần sau khi nhận được file dữ liệu bạn chỉ cần nhấn nút và có được kết quả mong muốn.
Trên diễn đàn này có rất nhiều code lấy dữ liệu từ file khác trên máy Offline hoặc online (trên mạngkể cả mạng Lan, trong các trang Web) mà không cần mở file. Bạn có thể tham khảo.
Đúng vậy, tôi thấy đầu bài này có thể dùng Power Query để xử lý nhưng nhìn cách chia dữ liệu mỗi tỉnh một sheet (có tất cả các tỉnh trong đó nhưng chỉ filter để lấy một tỉnh) là thấy nản lắm luôn. Việc cần làm là phải đồng bộ hết dự liệu đầu vào ở một sheet sau đó muốn xuất báo cáo kiểu gì cũng được.

Untitled.png
 
Đúng vậy, tôi thấy đầu bài này có thể dùng Power Query để xử lý nhưng nhìn cách chia dữ liệu mỗi tỉnh một sheet (có tất cả các tỉnh trong đó nhưng chỉ filter để lấy một tỉnh) là thấy nản lắm luôn. Việc cần làm là phải đồng bộ hết dự liệu đầu vào ở một sheet sau đó muốn xuất báo cáo kiểu gì cũng được.

View attachment 268106
Chính vậy tôi mới nói bạn đó để chung cả đã giao và chưa giao vào 1 sheet, sau đó có thể lấy đã giao hay chưa giao theo ngày, theo tỉnh, theo nhân viên đều được. Nhưng bạn ấy trình bày là file của bộ phận khác gửi đến và abc gì đó.
Tôi cũng đã cất công dùng code VBA để gom tất cả các Sh các tỉnh về một sh và định dùng mảng để lọc ra đã giao, chưa giao, nhưng đáng tiếc là cũng không hiểu là cách bạn đó lọc ra đã giao và chưa giao theo điều kiện nào nên đành bỏ ngỏ.
Cũng có thể đây chỉ là một bài toán nhỏ trong 1 bài toán lớn hơn (nhưng toàn dùng công thức thôi.)
 
Chính vậy tôi mới nói bạn đó để chung cả đã giao và chưa giao vào 1 sheet, sau đó có thể lấy đã giao hay chưa giao theo ngày, theo tỉnh, theo nhân viên đều được. Nhưng bạn ấy trình bày là file của bộ phận khác gửi đến và abc gì đó.
Tôi cũng đã cất công dùng code VBA để gom tất cả các Sh các tỉnh về một sh và định dùng mảng để lọc ra đã giao, chưa giao, nhưng đáng tiếc là cũng không hiểu là cách bạn đó lọc ra đã giao và chưa giao theo điều kiện nào nên đành bỏ ngỏ.
Cũng có thể đây chỉ là một bài toán nhỏ trong 1 bài toán lớn hơn (nhưng toàn dùng công thức thôi.)
Dạ có nghĩa là thế này nhé. Ví dụ trong ngày xuất ra được 1000 phiếu xuất kho cho 50 tỉnh. Ví dụ tỉnh A có 100 phiếu ra ngày hôm đó nhưng chỉ có 30 phiếu được kho đóng hàng gửi đi, còn lại là chưa đủ hàng hoặc chưa kịp thời gian để đóng để chuyển đi được. Nên họ mới bôi màu và filter các phiếu được gửi đi đó. Có cột ngày ra đơn hàng thì cột đó sẽ gồm nhiều ngày khác nhau, các đơn hàng xuất ra từ đầu tháng nhưng đến ngày 20 mới gửi được chả hạn. Vì cái này họ cứ gửi hàng ngày và em phải tổng hợp lại theo bản của em để làm báo cáo. Từ qua tới giờ họ làm kiểu này làm em nản quá vì phải nhập tay quá nhiều, em có nói là sử dụng cái cũ nhưng họ nói sếp bên đó yêu cầu phải làm theo form đó. Mong chị giúp em chứ k em làm thủ công quá ạ.
 
Dạ có nghĩa là thế này nhé. Ví dụ trong ngày xuất ra được 1000 phiếu xuất kho cho 50 tỉnh. Ví dụ tỉnh A có 100 phiếu ra ngày hôm đó nhưng chỉ có 30 phiếu được kho đóng hàng gửi đi, còn lại là chưa đủ hàng hoặc chưa kịp thời gian để đóng để chuyển đi được. Nên họ mới bôi màu và filter các phiếu được gửi đi đó. Có cột ngày ra đơn hàng thì cột đó sẽ gồm nhiều ngày khác nhau, các đơn hàng xuất ra từ đầu tháng nhưng đến ngày 20 mới gửi được chả hạn. Vì cái này họ cứ gửi hàng ngày và em phải tổng hợp lại theo bản của em để làm báo cáo. Từ qua tới giờ họ làm kiểu này làm em nản quá vì phải nhập tay quá nhiều, em có nói là sử dụng cái cũ nhưng họ nói sếp bên đó yêu cầu phải làm theo form đó. Mong chị giúp em chứ k em làm thủ công quá ạ.
ý tôi là điều kiện gì để từ sh BK chẳng hạn (vì các Sh khác phía sau cũng giống thế cả) là gì để lọc ra Sh đã giao hàng, chưa giao? chứ tôi thấy là trong Sh BK có những đơn hàng mà chẳng có dấu hiệu gì để nhận ra là đã giao, chưa giao.
 
ý tôi là điều kiện gì để từ sh BK chẳng hạn (vì các Sh khác phía sau cũng giống thế cả) là gì để lọc ra Sh đã giao hàng, chưa giao? chứ tôi thấy là trong Sh BK có những đơn hàng mà chẳng có dấu hiệu gì để nhận ra là đã giao, chưa giao.
Những cái màu vàng là đều đã giao rồi đó bạn
Nên họ mới bôi màu và filter các phiếu được gửi đi đó
 
Ở sheet đầu tiên là các đơn đã được giao, giờ vlookup tên người nhận ở các sheet phía sau mà các bạn filter vào đó.
Tôi không làm công thức cho bạn, tôi chỉ kéo dữ liệu về cho bạn theo ID và tên tương ứng.
Sau đó bạn muốn làm gì tiếp theo là việc của bạn.
Chú ý là tôi thây danh mục tôi đưa về chỉ có 104, trong khi file tổng của bạn có tới 115 cái ID (do khác màu)
Lưu ý: Các sheet bôi màu xanh không được sửa tên (hoặc nếu sửa thì tự sửa code)
Cách lấy dữ liệu là sẽ lặp qua các sheet (bỏ qua các sheet xanh), nếu ID là dạng số, ô đó là màu vàng và không bị bỏ trống thì sẽ tổng hợp lại. Kết hợp với dữ liêu ô L4 sẽ tìm ra cái tên người phụ trách
Bạn xem lại sai sót gì không?
 

File đính kèm

  • Bang ke giao hang ngay 20.10.2021 - GPEX.xlsm
    2.1 MB · Đọc: 14
Web KT
Back
Top Bottom