Tính toán và đếm hàng hóa xuất nhập khẩu dùng Dictionary
Kính gửi anh chị,
Em mới tham khảo và làm được code lọc cột C, D, E tại sheet DIC.
=> Nhờ a chị và các bạn hỗ trợ tính, đếm thêm cột F và G như ví dụ em có làm cho mã WLD với điều kiện trường Reporter ISO tại sheet Data bỏ toàn bộ các khách mã có ký tự bắt đầu bằng chữ A và kết quả xuất ra theo thứ tự lớn giảm dần của tổng Trade Value (US$). Em cảm ơn ạ !
2237
Bài này làm xong mà kiểm tra được mình…chết liền, riêng số tiền thằng đầu tiên thì hoàn toàn chính xác, mấy thằng sau không biết. Bài gì mà ghê quá
Bạn kiểm tra nhé, có gì chưa ưng ý thì tự sửa
Trời, đang hỏi bài tranh thủ trả lời luôn, quá dữ
Thân, còn cái sắp xếp thì tự Sort đi nhé bạn
www.giaiphapexcel.com/diendan/threads/t%C3%ADnh-to%C3%A1n-v%C3%A0-%C4%91%E1%BA%BFm-h%C3%A0ng-h%C3%B3a-xu%E1%BA%A5t-nh%E1%BA%ADp-kh%E1%BA%A9u-d%C3%B9ng-dictionary.157589/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Góp vui
Bài này dùng Pivot table đơn giản cũng được, mà Power query cũng được. Nhờ dùng công cụ có sẵn nên phát hiện vô số dòng bị bỏ trống cột Partner ISO, trong khi code VBA nếu không cẩn thận sẽ bỏ qua
Power query thêm 2 cột nối chuỗi thì y hệt kết quả mong muốn
Chắc là làm được.
Riêng bài này xài ADO không hay lắm, câu SQL sẽ khá phức tạp. Power query thì xé nhỏ sự phức tạp thành những steps.
Thiếu rồi bạn ơi! Dòng có giá trị null bị bỏ qua, và thiếu Re-Export
2244
Có thể xử lý chuỗi ngay bước group luôn bạn, viết kiểu vầy
Dễ hiểu mà không hiểu, mâu thuẫn quá.
Trong code có đoạn xài đến nó:
Ta thấy nó dùng cho chỉ số cột của mảng kết quả, dùng 2 lần: 1 lần dùng chính nó và 1 lần cộng 4
Giải thích hết:
– Kết quả chỉ cần 5 cột, nhưng khai báo mảng kết quả 11 cột, để tách kết quả ra theo 4 TradeFlow
– Mỗi Tradeflow sẽ đếm vào 1 trong 4 cột 4, 5, 6, 7
– Cộng 4 sẽ là 8, 9, 10, 11. Mỗi Trade flow sẽ tổng trade value vào 1 trong 4 cột này
– Khi 8 cột này có đủ dữ liệu, thì nối chuỗi 4 cột đầu ghi đè vào cột 4, nối chuỗi 4 cột sau ghi đè vào cột 5.
– Ghi kết quả xuống từ cột 1 đến cột 5, các cột từ 6 đến 11 thì bỏ, không xài nữa.
Như tôi đã nói ở 1 chủ đề khác, bản chất của 1 Dic trong code đó chứa 2 nội dung. Cách này có thể tiện lợi ở chỗ này chỗ khác nhưng sẽ có hạn chế như sau:
– Không tường minh. Dẫn đến người dùng không hiểu phải hỏi như trên
– Khi truy xuất sẽ chậm 1 chút xíu: Ví dụ chỉ có 4 Trade flow nhưng phải tìm để truy xuất item trong cái Dic đến 2 trăm mấy chục phần tử. Tốc độ rất không đáng kể nhưng có vẻ phi lý.
– Trong trường hợp cần đếm số lượng phần tử từng nội dung thì không đếm được bằng Dic.Count: Dic.Count bao gồm 2 nội dung
import export là key, 4, 5, là item. Là Dictionary chứ là gì bây giờ
Không phải thêm 4 trường, mà là thêm 4 keys, mỗi key có item là số thứ tự cột. Bài này tác giả dùng 1 Dic cho 2 nội dung: 1 là trade flow và 1 là Partner ISO.
(Khi gán vào mảng kết quả, thì key nào sẽ gắn vào cột là item của key đó (4, 5, 6, 7)
Bạn phải đọc lại giải thích bên trên, trên đó ghi rõ là kết quả cuối chỉ cần 5 cột, nhưng tạo mảng tới 11 cột. 8 cột phía sau chỉ dùng để tính toán, sau đó ghi đè 2 cột 4, 5 còn 6 cột thì bỏ, không đưa xuống.
* Nói rồi, xài gộp Dic khổ như vậy đấy.
Cụ thể code của bác Cò @concogia thiếu do bỏ qua Partner rỗng:
2246
Đề bài hỏng có cái Ưu tiên 2 à nha. Zí lại bác Cò lụt nghề rồi, 4 cái If ElseIf trong hình anh lập lại 2 lần, biến thì khai báo cả rổ rồi không xài
2247
Hai cái là hai cái, nối lại làm gì. Nếu đặt tên tường minh thì 1 cái tên là DicTradeflow, 1 cái tên là DicPartner. Bài này cũng không quá khó, code ở mức đơn giản vừa phải, thì Dic1 Dic2 cũng chấp nhận được.
Khi tôi viết cho 1 chương trình tương đối lớn thì dùng đến 5, 7 Dics cho các danh mục, 2 Dic cho việc liệt kê lỗi (cụ thể là lỗi mặt hàng chưa tồn tại, khách hàng chưa tồn tại). Bắt buộc phải khai báo tường minh và đặt tên tường minh.
Cụ thể là khai báo Public các danh mục để chạy nhiều thủ tục:
2251
Khai báo Dic chứa lỗi trong từng thủ tục:
2250
Kết quả từng thủ tục có thống kê lỗi:
2249
Và liệt kê danh mục lỗi (không tồn tại) để người dùng bổ sung:
2248
Mỗi Dic danh mục lên đến hàng ngàn, 7 cái lên đến hàng chục ngàn, gộp lại mà tìm kiếm trong đống gộp chung đó cho chết!
Thống kê phải lấy Dic.Count, Liệt kê xuống sheet phải liệt kê bằng Dic.Keys và Dic.Items.
Nếu tách ra các cột khác nhau thì chỉ cần pivot table thông thường, chưa cần đến power query :p :p
Chỉ cần 1 dic thôi em kèm theo mảng kết quả. Mảng kq có số dòng bằng số dòng mảng ban đầu. Key là tiêu chí cần group là partner iso, value là vị trí (số thứ tự dòng) key đó trong mảng kết quả. Đọc từng dòng mảng source, gặp key mới thì thêm vào cuối mảng kết quả, key cũ thì cộng vào vị trí của hàng value thôi.
Đó là code của bác @concogia đó @Cá ngừ F1. Hai Dic truy xuất gọn hơn 1 tẹo thay vì 1 cái If ElseIf 4 giá trị.
Bàn luận cho hết thì giờ ấy mà anh, dịch rảnh quá. Anh không viết thì bàn luận với ai? Có 2 anh em (với @Cá ngừ F1), bàn mãi cũng chán, em í chỉ có dạ thôi.
item chứa chỉ số của key đúng rồi, bài này 2 Dic (hoặc 1 Dic gộp như anh @HieuCD) thì 1 dic chỉ số dòng, 1 dic chỉ số cột.
item chứa chỉ số của key đúng rồi, bài này 2 Dic (hoặc 1 Dic gộp như anh @HieuCD) thì 1 dic chỉ số dòng, 1 dic chỉ số cột.
Tham gia 1 bài cho vui. Nhìn hơi quái chút.
Cần tra từ điển Pháp Việt và vài từ Hán Việt biết trước, sắm 2 cuốn từ điển riêng biệt quá lãng phí, tốn thêm ít nhất 2 trang bìa, chỉ cần viết tay thêm vài từ Hán Việt vào trang đầu là vừa đủ xài, người khác cầm nhầm từ điển lật trang đầu là biết ngay của người nào 🙂