Dùng code VBA để nạp danh mục mới.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

LuuAnh980

Thành viên tiêu biểu
Tham gia
28/9/22
Bài viết
452
Được thích
104
Giới tính
Nữ
Em có 4 file Excel, cùng nằm ổ D:
1/ file Tong
2/ file xuong 1
3/ file xuong 2
4/ file xuong 3
Trong 4 file đều có sheet "DanhMuc" có cấu trúc giông nhau.
Em nhờ các anh chị viết code để lấy danh mục về sheet DanhMuc của file tong, nhưng so với danh mục của file Tong, cái nào có rồi thì không lấy nữa (không trùng).
Em xin đưa file ví dụ thôi, để biết các danh mục, chứ thực tế 3 sheet danh mục nằm 3 file trên cùng ổ D.
 

File đính kèm

  • DanhMuc.xlsx
    19.5 KB · Đọc: 19
Em nhờ các anh chị viết code để lấy danh mục về sheet DanhMuc của file tong, nhưng so với danh mục của file Tong, cái nào có rồi thì không lấy nữa (không trùng).
Bạn tìm code nào tổng hợp từ các file về file tổng. sau khi tổng hợp xong. Remove Duplicates theo cột Code là ra kết quả bạn muốn à
 
Upvote 0
Tìm trên diễn đàn, Thành viên: Hai Lúa Miền Tây...
 
Upvote 0
Các anh chị giúp em với
 
Upvote 0
Em có 4 file Excel, cùng nằm ổ D:
1/ file Tong
2/ file xuong 1
3/ file xuong 2
4/ file xuong 3
Trong 4 file đều có sheet "DanhMuc" có cấu trúc giông nhau.
Em nhờ các anh chị viết code để lấy danh mục về sheet DanhMuc của file tong, nhưng so với danh mục của file Tong, cái nào có rồi thì không lấy nữa (không trùng).
Em xin đưa file ví dụ thôi, để biết các danh mục, chứ thực tế 3 sheet danh mục nằm 3 file trên cùng ổ D.
Bạn thử xem coi được không
Chú ý các file con phải chứa sheet mang tên Danh_Muc
 

File đính kèm

  • New folder.rar
    53 KB · Đọc: 14
Upvote 0
Bạn kiểm chứng lại có sai không nha!
File làm theo 3 sheet trong 1 file,
Bạn áp dụng tương tự cho 3 file nha...
 

File đính kèm

  • DanhMuc123.xlsm
    28.1 KB · Đọc: 13
Upvote 0
Tải nguyên thư mục tại bài #9
giải nén ,
mở file DanhMuc,
Click button
 
Lần chỉnh sửa cuối:
Upvote 0
File của anh @Quang_Hải em bấm nút "Go" thì lỗi
DanhMuc.png
Mong anh @Quang_Hải xem giúp.
Bài đã được tự động gộp:

Còn file của anh @TongDe thì không có file DanhMucTong, chỉ có 3 file danh mục con, mà Button cũng chả thấy. Còn File dùng ADO của anh thì lại chỉ chép có cột B à, đúng nó phải là B8:I.
 
Lần chỉnh sửa cuối:
Upvote 0
Xin lỗi, nén file bị thiếu
Tải lại file này
 

File đính kèm

  • GPE.rar
    45 KB · Đọc: 10
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn anh @TongDe đã giúp, nhưng file của anh chưa đúng ý anh ơi.
Lọc trùng nữa anh ơi, ví dụ như code 041560 ở DanhMucTong có rồi, thì nạp vô không lấy nữa.
Mong anh @TongDe giúp thêm code lọc trùng ạ.
 
Upvote 0
Bỏ 2 chữ All giữa Union ... Select
 

File đính kèm

  • Untitled.png
    Untitled.png
    42.8 KB · Đọc: 18
Upvote 0
Anh @TongDe ơi, thêm câu lệnh Sort nữa dùm em được không ạ.
 
Upvote 0
Bạn muốn Sort thế nào...
Default là từ số nhỏ đến chữ lớn...
Trong ADO dùng khóa Order By ... Asc , Desc
Trong VBA thêm dòng này sau khi gán xuống sheet; Xếp từ lớn nhất xuống

Sheet1.Range("d8:j5000").Sort Key1:=Range("d8"), Order1:=xlDescending, Header:=xlNo
 
Lần chỉnh sửa cuối:
Upvote 0
Cột Code của bạn format là Text nên ADO mặc định chỉ có thể sắp theo như thế...không cần Order by nữa...
Còn muốn sort từ Z -->a thì theo #13,
Còn muốn sort kiểu khác thì thêm cột phụ...
Hoặc thêm cột kết quả mong muốn, để các thành viên khác hiểu thêm ý bạn muốn
 
Upvote 0
Cột B_Code em đã định dạng là Text, khi nạp danh mục vô, em thấy có Sort tăng dần đâu anh.
 
Upvote 0
Lấy chừng 3 cột , và ghi bằng tay kết quả mong muốn sau khi sort...
 
Upvote 0
Bỏ 2 chữ All giữa Union ... Select
Bài này là kinh điển của code SQL String.
1. Khi Union, muốn tất cả thì dùng "All", muốn lọc trùng thì bỏ "All". Muốn consolidate thì dùng "All" rồi "Group By".
Tuy nhiên, vì Union xét tất cả các trường cho nên gặp lúc chỉ cần 1 vài trường khác nhau thì nên "All" rồi "Group By các trường cần khác nhau", các trường còn lại thì để yên (xem chú thích)

2. Lời khyên của dân trên 20 năm viết SQL String:
Luôn luôn (luôn luôn chứ không phải phần lớn" đặt một dấu cách ngay sau dấu ", trước code:
" Select ....." & _
" From ..." & _
...
Vừa tránh rắc rồi về code, vừa dễ copy/paste hay insert/chêm thêm dòng về sau.

Chú thích: SQL tiêu chuẩn không chấp nhận mặc định các trường không có trong list Group By, gặp trường hợp này, cứ dùng hàm Max tuốt.
 
Upvote 0
File của anh @Quang_Hải em bấm nút "Go" thì lỗi
View attachment 295990
Mong anh @Quang_Hải xem giúp.
Bài đã được tự động gộp:

Còn file của anh @TongDe thì không có file DanhMucTong, chỉ có 3 file danh mục con, mà Button cũng chả thấy. Còn File dùng ADO của anh thì lại chỉ chép có cột B à, đúng nó phải là B8:I.
Mình thỉnh thoảng mới vào GPE nên trả lời hơi chậm tí.
Theo bảng thông báo thì code báo lỗi là thiếu khai báo biến. Cũng hơi lạ vì mình kiểm tra không thấy báo lỗi nên không hiểu tại sao. Code này do mình copy từ file khác nên dư biến tùm lum chứ không thể thiếu biến được. Nếu báo lỗi, bạn thử chọn debug xem code tô vàng ở chỗ nào
 
Upvote 0
Bạn muốn Sort thế nào...
Default là từ số nhỏ đến chữ lớn...
Trong ADO dùng khóa Order By ... Asc , Desc
Trong VBA thêm dòng này sau khi gán xuống sheet; Xếp từ lớn nhất xuống

Sheet1.Range("d8:j5000").Sort Key1:=Range("d8"), Order1:=xlDescending, Header:=xlNo
Khi dùng Union (không có ALL) thì SQL tự động sort theo ưu tiên từ trái sang phải (cột trái trước, cột phải sau). Tuy nhiên đây chỉ là sự ngẫu nhiên (vì nó cần sort để loại trùng); tiêu chuẩn SQL không bắt buộc cho nên trên thực tế không bảo đảm 100%.

Nếu muốn sort hoặc sort ưu tiên theo cột khác thì phải nêu rõ trong câu truy vấn.
T-SQL (SQL Server) có query optimizer cho nen nó biết luycxs nào cần sort lại. Rất tiếc ở đây ta dùng Access SQL cho nên nó có thể sort lần nữa (hơi chậm hơn một chút).
 
Upvote 0
Web KT

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

Back
Top Bottom