Do điều kiện khung thời gian của bạn rắc rối nên làm phức tạp vấn đề.Mình có biểu giá như sheet "bieugia" trong file đính kèm. Các bạn giúp mình lập công thức tính cột thành tiền ở sheet " thucte" với.
nhiều điều kiện quá mình loạn cả lên.
=OFFSET(Banggia!$D$2:$J$2,LOOKUP(2,1/(Banggia!$A$3:$A$11=Thucte!$B3)/(Banggia!$B$3:$B$11=Thucte!$C3)/(MMULT(N(MID(SUBSTITUTE(Banggia!$C$3:$C$11,"-",REPT(" ",100)),{1,101},100)*{-1,1}>=Thucte!$D3*{-1,1}),{1;1})=2),ROW(Thucte!$1:$100)),)*CHOOSE({1,2,3,4,5,6},1,1,Thucte!E3,Thucte!E3,Thucte!E3,Thucte!E3)
F3=INDEX(DongThoa,SUMPRODUCT(N(E3>CHOOSE({1,2,3,4,5},0,INDEX(DongThoa,1),45,100,300)))+1)
Do điều kiện khung thời gian của bạn rắc rối nên làm phức tạp vấn đề.
Ví dụ: khung giờ 0530-0800, tức ý là từ 05h30 đến 08h00, phải vậy không!!? đem so giả sử với 0615 (06h15), thì nó phù hợp khung giờ này. Vậy hỏi bạn nếu giờ thực tế là 1015 thì nó nằm ở khung giờ nào? vì dòm trong cả bảng chả thấy khung giờ phù hợp.
Tuy nhiên, tôi vẫn đưa giải pháp theo những gì trong file mà bạn đã gửi lên, cụ thể:
Xem file kèm.
- Tạo Name "DongThoa": để lấy dòng thỏa điều kiện theo từng dòng của dữ liệu thực tế (xem công thức minh họa tại H3: M11 file đính kèm)
Mã:=OFFSET(Banggia!$D$2:$J$2,LOOKUP(2,1/(Banggia!$A$3:$A$11=Thucte!$B3)/(Banggia!$B$3:$B$11=Thucte!$C3)/(MMULT(N(MID(SUBSTITUTE(Banggia!$C$3:$C$11,"-",REPT(" ",100)),{1,101},100)*{-1,1}>=Thucte!$D3*{-1,1}),{1;1})=2),ROW(Thucte!$1:$100)),)*CHOOSE({1,2,3,4,5,6},1,1,Thucte!E3,Thucte!E3,Thucte!E3,Thucte!E3)
- Công thức tính Thành tiền:
Enter, fill xuống.Mã:F3=INDEX(DongThoa,SUMPRODUCT(N(E3>CHOOSE({1,2,3,4,5},0,INDEX(DongThoa,1),45,100,300)))+1)
Thân
Thì Name "Dongthoa" cũng là 1 hình thức dùng cột phụ. Đến lúc cần để xử lý thì không nên ngần ngại dùng cột phụ.Em mò từ sáng giờ mà chưa có cách nào ngoài tạo cột phụ
Tôi đang xem xét file thực tế bạn gửi, sơ bộ hoàn toàn khác và phức tạp gấp bội lần file mẫu bạn gửi.Chào bạn Phan Thế Hiệp.
Mình thử lấy dữ liệu thực tế trong file bảng tính và đưa vào file test mẫu của bạn, nhưng nhiều chỗ báo lỗi "#N/A". Mình không hiểu nguyên nhân vì sau. Bạn kiểm tra và giúp mình với.
Đã thực hiện xong, nhưng do vấn đề phức tạp nên xử lý công thức và phải dùng thêm cột phụ tăng lên:Chào bạn Hiệp, có lẽ bạ không cần xử lý phần tính phí theo Thứ Bảy và Chủ nhật đâu. Vì thực tế có nhiều hành trình lại các ngày khác, vì vậy bạn giúp mình theo khoảng thời gian trong ngày là đủ. Phần thứ bảy chủ nhật thì mình lọc theo filter rồi copy và paste thôi.
=OFFSET('15apr-further'!$E$5:$K$5,LOOKUP(2,1/($P2='15apr-further'!$P$6:$P$46)/($H2>='15apr-further'!$M$6:$M$46)/($H2<='15apr-further'!$N$6:$N$46)/('15apr-further'!$O$6:$O$46*1=IF(AND(P2="HANSGN",WEEKDAY(H2)<3,MATCH(H2,'15apr-further'!$W$2:$AA$2)>2),2,MOD(MATCH(K2,OFFSET('15apr-further'!$R$2:$V$2,MATCH($P2,'15apr-further'!$Q$2:$Q$3,)-1,)),2)))/(TRIM($L2)='15apr-further'!$C$6:$C$46),ROW($1:$500)),)*CHOOSE({1,2,3,4,5,6},1,1,$F2,$F2,$F2,$F2)
M2=INDEX(DongThoa,SUMPRODUCT(N(F2>CHOOSE({1,2,3,4,5},0,INDEX(DongThoa,1),45,100,300)))+1)
Đã thực hiện xong, nhưng do vấn đề phức tạp nên xử lý công thức và phải dùng thêm cột phụ tăng lên:
Ví dụ:
Thân
- "Hành trình" của 2 sheet thậm chí trong cùng một sheet như "Thucte" cũng khác nhau, ba hồi HANSGN, ba hồi SGNHAN!? Buộc lòng phải dùng cột phụ để đổi về.
- Sheet khung bảng giá lại dùng "Merge Cell" tại các cột quan trọng cần so khớp, vì vậy để giảm thiểu công thức cũng buộc lòng phải dùng cột phụ.
- Trọng lượng tối thiểu trước trong file mẫu thì có, trong bảng thực tế thì không nên phải tạo thêm cột trong bảng giá này (cột E)
- Một số mục như Gia cầm, bưu phẩm bưu kiện, theo khung trọng lượng tại mức: 45,100,300 không có giá, nên khi tính toán nếu trọng lượng thực tế tại các mức này sẽ bằng 0.
- Name: "DongThoa" điều chỉnh:
Mã:=OFFSET('15apr-further'!$E$5:$K$5,LOOKUP(2,1/($P2='15apr-further'!$P$6:$P$46)/($H2>='15apr-further'!$M$6:$M$46)/($H2<='15apr-further'!$N$6:$N$46)/('15apr-further'!$O$6:$O$46*1=IF(AND(P2="HANSGN",WEEKDAY(H2)<3,MATCH(H2,'15apr-further'!$W$2:$AA$2)>2),2,MOD(MATCH(K2,OFFSET('15apr-further'!$R$2:$V$2,MATCH($P2,'15apr-further'!$Q$2:$Q$3,)-1,)),2)))/(TRIM($L2)='15apr-further'!$C$6:$C$46),ROW($1:$500)),)*CHOOSE({1,2,3,4,5,6},1,1,$F2,$F2,$F2,$F2)
- Công thức "Thành tiền" như cũ:
Enter, fill xuống.Mã:M2=INDEX(DongThoa,SUMPRODUCT(N(F2>CHOOSE({1,2,3,4,5},0,INDEX(DongThoa,1),45,100,300)))+1)
- Một số lưu ý có ghi thêm trong file để bạn thực hiện đúng.
Em cũng vậy, căng não ra luôn, hichicChịu khó tìm hiểu lắm nhưng cũng không hiểu nỗi,
"File gốc" mà bạn đã upload lên và muốn điền công thức vào đó, thì nó đang tại bài số mấy ở trên đây?Quên mất thông tin, đối với các mã hàng mà phía trước có giá (VD mức 100, 300 có giá, 500 không có giá) thì mức giá phía sau lấy theo giá trước.
Bạn làm giúp cho mình như file test thôi, bo việc lựa chọn thứ bảy chủ nhật, hoặc theo khoảng thời gian đi vì thực tế giá thay đổi liên tục, theo ngày, tuần, tháng, ... chỉ cần theo tham số giờ trong ngày thôi. Các tham số thứ, tuần, hoặc khoảng thời gian mình dùng filter rồi copy và paste là OK. Bạn làm trên file gốc mình gửi thì tốt cho mình.
Ths.
Chịu khó tìm hiểu lắm nhưng cũng không hiểu nỗi,
Nếu thực sự muốn, huỡn chút anh sẽ ghi giải thuật gợi ý.Em cũng vậy, căng não ra luôn, hichic
Nếu thực sự muốn, huỡn chút anh sẽ ghi giải thuật gợi ý.
"File gốc" mà bạn đã upload lên và muốn điền công thức vào đó, thì nó đang tại bài số mấy ở trên đây?
Thân
Nếu thực sự muốn, huỡn chút anh sẽ ghi giải thuật gợi ý.
Thân
Xem file đính kèm.Bạn tính cột Thành tiền trong Sheet "Thucte" giúp mình ở file đính kèm. Các xử lý liên quan Thứ, khoảng thời gian mình sẽ tự lọc theo filter để đỡ phức tạp vì bảng giá nhiều lắm.
KL Định mức trong File test chính bằng giá trị cột M/cột N.
Hàng thông thường không có mã hàng.
Nếu giá trong cột Q45, Q100, Q300, Q500 không có thì giá bàng giá tương ứng trước đó (cột N). Tương tự nếu giá trong cột Q100, Q300, Q500 thì giá bằng giá tương ứng trong cột Q45, ...
Gợi ý cho file bài giải đính kèm bài #10:Cám ơn anh trước