Giải pháp tính XNT theo thời kỳ (2 người xem)

  • Thread starter Thread starter ThuNghi
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Tôi đang thử làm bằng VBA về BC XNT theo thời kỳ. từ ngày đầu -> ngày
Tôi có DM tồn kho theo từng đầu tháng như sau trong số khỏang 2000 dm
MaHang----Thang----SL
MH01---------9------2
...
DM Tồn kho hàng tháng khỏang 300
Một Sh Nhap và 1 sh Xuat theo thời gian 1 năm
Bình thường thì có thể dùng sumproduct với DM là tòan bộ dm, vì khi nhập đã update vào DM. Nhưng như thế thì chạy rất chậm, mặc dù đã đưa về giá trị.
Tôi tính làm giải pháp sau, dùng 1 sh tmp
1/ Tạo tồn kho đầu ngày đầu = cách chỉ lấy tồn kho tháng ngày đầu (Chỉ lấy MH, SL, GT)
2/ Lấy từ sh nhap những record ngày <=ngày đầu và >= ngày đầu tháng = vòng lặp
3/ Lấy từ sh Xuat những record ngày <=ngày đầu và >= ngày đầu tháng = vòng lặp
Dùng filter unique record, từ đó tính ra DMTK ngày đầu và dùng sumif => Tồn kho ngày đầu.
Cũng làm như vậy => nhập, xuất và tồn CK.
Nhưng mà thấy vụng về thế nào.
Nhờ các bạn cho tôi một giải pháp.
Xin cám ơn.
 
ThuNghi đã viết:
Tôi đang thử làm bằng VBA về BC XNT theo thời kỳ. từ ngày đầu -> ngày
Tôi có DM tồn kho theo từng đầu tháng như sau trong số khỏang 2000 dm
MaHang----Thang----SL
MH01---------9------2
...
DM Tồn kho hàng tháng khỏang 300
Một Sh Nhap và 1 sh Xuat theo thời gian 1 năm
Bình thường thì có thể dùng sumproduct với DM là tòan bộ dm, vì khi nhập đã update vào DM. Nhưng như thế thì chạy rất chậm, mặc dù đã đưa về giá trị.
Tôi tính làm giải pháp sau, dùng 1 sh tmp
1/ Tạo tồn kho đầu ngày đầu = cách chỉ lấy tồn kho tháng ngày đầu (Chỉ lấy MH, SL, GT)
2/ Lấy từ sh nhap những record ngày <=ngày đầu và >= ngày đầu tháng = vòng lặp
3/ Lấy từ sh Xuat những record ngày <=ngày đầu và >= ngày đầu tháng = vòng lặp
Dùng filter unique record, từ đó tính ra DMTK ngày đầu và dùng sumif => Tồn kho ngày đầu.
Cũng làm như vậy => nhập, xuất và tồn CK.
Nhưng mà thấy vụng về thế nào.
Nhờ các bạn cho tôi một giải pháp.
Xin cám ơn.

Làm vậy lâu hơn là cái chắc. Khi bác sửa lại 1 ngày nào đó thì việc lặp lại cả núi công việc đó là một việc . . . gian nan.

Bác dùng sumproduct tính ào cái là ra ngay mà (tính trên Data)
Thân!
 
Nhưng lúc này mình thấy sumproduct chạy chậm quá so với sumif, nếu dm 10.000 dòng thì phải tính tồn DK, NTK,XTK theo 10.000 dòng sau đó sort và bỏ rỗng.
Có thuật tóan nào nữa không. Thấy PM = Fox thường làm như vậy.
 
ThuNghi đã viết:
Nhưng lúc này mình thấy sumproduct chạy chậm quá so với sumif, nếu dm 10.000 dòng thì phải tính tồn DK, NTK,XTK theo 10.000 dòng sau đó sort và bỏ rỗng.
Có thuật tóan nào nữa không. Thấy PM = Fox thường làm như vậy.

Đúng là do thuật toán nên sumproduct chậm hơn sumif !!!

Còn việc làm như bác là việc chia nhỏ ra để làm.
Thay vì làm 1 lần thì ta chia nhỏ ra theo từng năm hay từng tháng. Để nếu có đối chiếu đến tháng nào thì chỉ tính trong tháng đó và + với tồn của tháng trước. Như vậy tính nhanh hơn (lúc đó)
Tuy nhiên nếu phải sửa 1 phiếu trong quá khứ thì lúc đó hơi mệt.

Hơn nữa muốn làm điều đó thì không những số dư đầu kỳ của mọi thứ trong từng tháng được lưu riêng mà ngay cả DATA phát sinh cũng lưu riêng từng tháng (bác nhìn mấy File của Fox là thấy ngay thôi). Đây là việc làm chuyên nghiệp, tuy nhiên đòi hỏi về trình độ lập trình cũng như về CSDL, SQL. . . cao hơn hẳn. Có lẽ Excel thuần túy khó có thể làm được điều này.

Thân!
 
Đúng là do thuật toán nên Sumproduct chậm hơn Sumif !!!
Làm sao em biết thuật toán MS dùng ! Theo anh nghĩ do mình thấy chậm hơn thôi !

Đây là việc làm chuyên nghiệp, tuy nhiên đòi hỏi về trình độ lập trình cũng như về CSDL, SQL. . . cao hơn hẳn. Có lẽ Excel thuần túy khó có thể làm được điều này.
Đồng ý với Okebab, nó giống như bài toán trích lọc từ BOM của anh bị giới hạn về số lượng dữ liệu, ngoài ra còn nhiều vấn đề khác nữa. Nếu đã dùng SAP thì mới cảm thấy nó hay tuyệt !
Đó là lý do các file sau này anh đều cố gắng đưa tất cả các dữ liệu ra bên ngoài Excel. Khi cần thì mới lấy về, nhưng tất cả các chức năng mình muốn thì cũng tương đối dễ hơn nếu dùng Excel thuần túy.

Lê Văn Duyệt
 
levanduyet đã viết:
Làm sao em biết thuật toán MS dùng ! Theo anh nghĩ do mình thấy chậm hơn thôi !

Be be be !!! Thế mới gọi là . .. . em bác Lê Văn Duyệt chứ !!!!!!--=0

Vì cùng 1 điều kiện, cùng 1 máy, cùng 1 CSDL, cùng của Bill . . . tóm lại là cùng hết, chỉ có khác nhau về hàm. Thế mà sumif nhanh hơn hẳn.

Vì vậy chứng tỏ, trong TH có 1 ĐK, sumif nhanh hơn sumproduct. Vì vậy có thể nói là thuật toán (với 1 ĐK) của sumif nhanh hơn.

Và ngược lại : Nếu không phải thì là do . . . cái gì nhỉ ?????????

Thân!
 
Mr Okebab đã viết:
Đúng là do thuật toán nên sumproduct chậm hơn sumif !!!

Còn việc làm như bác là việc chia nhỏ ra để làm.
Thay vì làm 1 lần thì ta chia nhỏ ra theo từng năm hay từng tháng. Để nếu có đối chiếu đến tháng nào thì chỉ tính trong tháng đó và + với tồn của tháng trước. Như vậy tính nhanh hơn (lúc đó)
Tuy nhiên nếu phải sửa 1 phiếu trong quá khứ thì lúc đó hơi mệt.

Hơn nữa muốn làm điều đó thì không những số dư đầu kỳ của mọi thứ trong từng tháng được lưu riêng mà ngay cả DATA phát sinh cũng lưu riêng từng tháng (bác nhìn mấy File của Fox là thấy ngay thôi). Đây là việc làm chuyên nghiệp, tuy nhiên đòi hỏi về trình độ lập trình cũng như về CSDL, SQL. . . cao hơn hẳn. Có lẽ Excel thuần túy khó có thể làm được điều này.

Thân!
- Cách làm chuyển kỳ hàng tháng để tính số dư đầu kỳ sẽ cho ta việc tính số dư tại thời một cách nhanh chóng. (Dư tại thời điểm = Dư đầu kỳ + PS tăng - PS giảm)
- Để tính số dư theo kiểu "Từ ngày" --> "Đến ngày". Ta coi số dư đầu kỳ là Từ ngày. Khi đó, phải tính trước số dư ở thời điểm "Từ ngày" theo như cách tính ở trên.
- Trường hợp sửa chứng từ (Tây người ta ko cho sửa chứng từ bao giờ mà chỉ có chứng từ điều chỉnh mà thôi) thì ta chỉ chạy chuyển kỳ lại cho những đối tượng liên quan tới chứng từ đó (hàng hóa, đối tượng công nợ,...) ngay lúc save chứng từ đang sửa đó, như vậy công việc chuyển kỳ dạng "update" đó sẽ chạy vô cùng nhanh (vì chỉ chạy cho 1 vài đối tượng chứ ko phải chạy lại tất cả).
- Làm trên Excel hả? Ko rõ lắm nhưng làm trên MS SQL thì nhanh lắm.
 
Lần chỉnh sửa cuối:
levanduyet đã viết:
Nếu đã dùng SAP thì mới cảm thấy nó hay tuyệt !
Lê Văn Duyệt

Anh Duyệt đang có cơ hội được dùng 1 SP tuyệt vời nhất thế giới.

Công ty của anh là công ty nào vậy? Triển khai SAP thời điểm nào? Đang dùng R3 hay MySAP? Đang dùng những gì của SAP? NCC (chắc là nước ngoài) là công ty nào (của nước nào)?
 
Web KT

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

Back
Top Bottom