Phương Phương mito
Thành viên thường trực
- Tham gia
- 1/5/19
- Bài viết
- 275
- Được thích
- 65
Dạ, em cảm ơn anh ạ. Còn 3 cột là đếm 2 phân kỳ trả nợ và chỗ nhận xét kỳ trả nợ anh nhỉ. Cái chỗ đó hay mình làm công thức rồi Fill nó xuống a nhỉ. Nửa code nửa công thức trong code.heMình giúp bạn được chút xíu rồi nè, bạn xem thử đi rồi mọi người sẽ đóng góp thêm cho bạn nhé.
Để vài hôm nữa người nào biết sẽ giúp cho bạn, cái phần đó khó hơn, mà cũng không khó lắm. mình chưa làm được.Dạ, em cảm ơn anh ạ. Còn 3 cột là đếm 2 phân kỳ trả nợ và chỗ nhận xét kỳ trả nợ anh nhỉ. Cái chỗ đó hay mình làm công thức rồi Fill nó xuống a nhỉ. Nửa code nửa công thức trong code.he
Dạ em cảm ơn anh nhiều ạ !Để vài hôm nữa người nào biết sẽ giúp cho bạn, cái phần đó khó hơn, mà cũng không khó lắm. mình chưa làm được.
Em cảm ơn anh ạ !Bạn có thể dùng Power Pivot:
Dữ liệu có vẻ chưa hợp lý lắm, một số khoản thu nhưng hợp đồng không có số tiền
View attachment 265458
Cảm ơn anh nhiều ạ !Bài này tương tự thống kê xuất nhập tồn.
Bạn thử tham khảo Topic này: https://www.giaiphapexcel.com/diendan/threads/tạo-sổ-th-nxt-với-tốc-độ-nhanh-nhất-dữ-liệu-hơn-1-triệu-dòng.90062/
Em cảm ơn anh đã nhiệt tình hỗ trợ ạ. CHưa đúng nhưng em sẽ xem sao ạ !File nay chạy tốt nè bạn nhưng số liệu so sánh giữa 2 kết quả thì thấy chưa đúng lắm. Bạn xem thử nhé.
Bạn chạy code rồi kiểm tra tại sheet KQ thử xem (tôi chưa sắp xếp theo cột nào cả)Kính gửi Anh chị,
Em có sheet Doanh_thu và Cong_no theo dõi theo KH và mã hợp đồng kinh tế. Em có làm một bảng tính toán và phân loại công nợ tại sheet Tinh_toan. Nhờ anh chị hỗ trợ làm theo code VBA để tiện cho theo dõi và tính toán định kỳ ạ.
nhờ Anh chú thích những dòng code đó được không Anh? Em đọc mà chưa hiểu nơi1Bạn chạy code rồi kiểm tra tại sheet KQ thử xem (tôi chưa sắp xếp theo cột nào cả)
2 đoạn này Anh!Tôi dùng dictionary cơ bản thôi mà. Bạn chưa hiểu từ chỗ nào?
arrKQ(Dic.Item(dKey), 3) = arrKQ(Dic.Item(dKey), 3) + arrDT(i, 6)
arrKQ(Dic.Item(dKey), 4) = arrKQ(Dic.Item(dKey), 4)
If Left(arrKQ(Dic.Item(dKey), 9), 2) = "Ng" Then
arrKQ(Dic.Item(dKey), 9) = arrCN(i, 5)
arrKQ(Dic.Item(dKey), 3) = arrKQ(Dic.Item(dKey), 3) + arrDT(i, 6) là cộng doanh thu vào cái dòng Khách hàng&Hợp đồng nào đó đã được lưu trong mảng kết quả tại dòng Dic.Item(dKey), được xác định bằng biến k khi thêm vào Dic. Vì dụ: Dic.Item(dKey) = 5 thì tìm arrKQ(dòng 5, cột 3) cộng doanh thu arrDT(i, 6) vào đó.2 đoạn này Anh!
PHP:arrKQ(Dic.Item(dKey), 3) = arrKQ(Dic.Item(dKey), 3) + arrDT(i, 6) arrKQ(Dic.Item(dKey), 4) = arrKQ(Dic.Item(dKey), 4)
PHP:If Left(arrKQ(Dic.Item(dKey), 9), 2) = "Ng" Then arrKQ(Dic.Item(dKey), 9) = arrCN(i, 5)
Code chạy đúng ạ, Em cảm ơn anh đã giúp đỡ ạ !arrKQ(Dic.Item(dKey), 3) = arrKQ(Dic.Item(dKey), 3) + arrDT(i, 6) là cộng doanh thu vào cái dòng Khách hàng&Hợp đồng nào đó đã được lưu trong mảng kết quả tại dòng Dic.Item(dKey), được xác định bằng biến k khi thêm vào Dic. Vì dụ: Dic.Item(dKey) = 5 thì tìm arrKQ(dòng 5, cột 3) cộng doanh thu arrDT(i, 6) vào đó.
arrKQ(Dic.Item(dKey), 4) = arrKQ(Dic.Item(dKey), 4) + 1 là cộng 1 vào mảng kết quả của số lần xuất hiện của cặp Khách hàng&Hợpđồng nào đó có dòng là Dic.Item(dKey) như giải thích ở trên và cột là 4.
If Left(arrKQ(Dic.Item(dKey), 9), 2) = "Ng" Là do trước đó tôi lưu chuỗi "Người mua chưa thanh toán"ở các cột 5, 7, 8, 9 ở mảng kết quả nên chừ nếu thấy chuỗi đó (tức 2 chữ đầu = Ng đó mà), thì ghi cái ngày trả nợ vào đấy. Nếu không thấy chuỗi đó thì so sánh WorksheetFunction.Max(arrCN(i, 5), arrKQ(Dic.Item(dKey), 9)) để lấy cái ngày lớn để nhất ghi vào.
Nếu ở trên mà so sánh ngày tháng với chuỗi kia thì sẽ gây lỗi nên buộc phải dùng điều kiện If ... Else này
Bạn xóa If -> End If chỗ có dòng Debug.Print... đi bạn nhé. Tôi Debug mà quên xóa.Code chạy đúng ạ, Em cảm ơn anh đã giúp đỡ ạ !
Cảm ơn anh nhiều nhiều ạ !Bạn xóa If -> End If chỗ có dòng Debug.Print... đi bạn nhé. Tôi Debug mà quên xóa.
và thêm dòng sắp xếp này vào cuối code: Sheet4.Range("A5").Resize(k, 9).Sort Key1:=Sheet4.Range("A5"), Order1:=xlAscending, Header:=xlNo