quoctan132
Thành viên mới

- Tham gia
- 28/8/15
- Bài viết
- 7
- Được thích
- 0
Em có file như đính kèm. Vì số lượng ô cần điền hàm nhiều quá nên làm cho file nặng và chậm khi tính toán. Muốn nhờ các bác chuyển qua code VBA. 
Tại A8.sheet"Lich giao hang" có 2 trạng thái xem file là Giao hàng thực tế và Lịch giao hàng.
Khi chọn Giao hàng thực tế thì Vùng (I21:NP40) sẽ dùng công thức: IFERROR(IF(I$20="","",SUMIFS(INDIRECT("'XP-"&$G21&"'!G9:G500"),INDIRECT("'XP-"&$G21&"'!C9:C500"),$D21,INDIRECT("'XP-"&$G21&"'!I9:I500"),I$20)/INDEX(HD!$E$15:$E$48,MATCH('Lich giao hang'!$D21,HD!$L$15:$L$48,0),1))*100,"")
Đại khái là lấy tổng KL giao hàng từng ngày theo HĐ và Mã công ty rồi chia cho Tổng KL đơn hàng để tính ra % giao được trong 1 ngày (các sheet có đầu XP)
Khi chọn "Lich giao hang" sẽ dùng CT: IFERROR(IF(I$20="","",IF(AND(I$20>=VLOOKUP($F21,HD!$B$9:$J$52,9,0),I$20<=VLOOKUP($F21,HD!$B$9:$K$52,10,0)),"x","")),"")
Lấy khoảng thời gian giao hàng trong sheet HD để đánh dấu "x" vào bảng thời gian.





Tại A8.sheet"Lich giao hang" có 2 trạng thái xem file là Giao hàng thực tế và Lịch giao hàng.
Khi chọn Giao hàng thực tế thì Vùng (I21:NP40) sẽ dùng công thức: IFERROR(IF(I$20="","",SUMIFS(INDIRECT("'XP-"&$G21&"'!G9:G500"),INDIRECT("'XP-"&$G21&"'!C9:C500"),$D21,INDIRECT("'XP-"&$G21&"'!I9:I500"),I$20)/INDEX(HD!$E$15:$E$48,MATCH('Lich giao hang'!$D21,HD!$L$15:$L$48,0),1))*100,"")
Đại khái là lấy tổng KL giao hàng từng ngày theo HĐ và Mã công ty rồi chia cho Tổng KL đơn hàng để tính ra % giao được trong 1 ngày (các sheet có đầu XP)
Khi chọn "Lich giao hang" sẽ dùng CT: IFERROR(IF(I$20="","",IF(AND(I$20>=VLOOKUP($F21,HD!$B$9:$J$52,9,0),I$20<=VLOOKUP($F21,HD!$B$9:$K$52,10,0)),"x","")),"")
Lấy khoảng thời gian giao hàng trong sheet HD để đánh dấu "x" vào bảng thời gian.



