Tôi đoán có lẽ bạn thiếu tham số thứ tư:Các bác cho em hỏi giùm. Em dùng hàm vlookup nhưng nhiều lúc trả về giá trị sai là nguyên nhân vì sao? có cách nào khắc phục ko?
Bạn xem lại có phải bạn đã bỏ mất tham số thứ tư này không? Nếu đúng như thế thì việc dò sẽ là "Dò không chính xác"... Trong 1 danh sách không được sort trước sẽ cho kết quả khong đúng như ý muốn=VLOOKUP(Trị dò, bảng dò, cột dò, cách dò)
Nếu gặp dử liệu trùng thì VLOOKUP sẽ tìm dòng đầu tiên mà nó tìm thấy... Vậy bạn muốn tìm cái gì đây?Nếu mảng dữ liệu trùng nhau có cách nào giải quyết ko? Bạn po_pikachu có nick chat ko mình gửi file cho bạn xem hộ mình. mình gửi file lên diễn đàn ko được
Mình ko gửi file nên được có bác chỉ giáo giúp
Chào các bạn
Mình gặp phải một bài toán tính hệ số lương như sau:
Nếu Doanh số từ 20 SP trở xuống thì Hệ số là 1.0
Nếu Doanh số từ trên 20 đến 40 SP thì Hệ số là 1.1
...............................
Nếu Doanh số từ trên 140 đến 160 SP thì Hệ số là 1.7
Nếu Doanh số trên 160 SP thì Hệ số là 1.8
Function hsluong(cel As Integer)
For i = 0 To Int(cel / 20)
If i > 8 Then k = 8 Else: k = i
If i = 0 Then
temp = 20
ElseIf 20 * (i + 1) >= cel Then
temp = temp + (cel - 20 * i) * Val("1." & k)
Else
temp = temp + 20 * Val("1." & k)
End If
Next
hsluong = temp
End Function
Bạn dùng code này bảo đảm luôn!
Thân.PHP:Function hsluong(cel As Integer) For i = 0 To Int(cel / 20) If i > 8 Then k = 8 Else: k = i If i = 0 Then temp = 20 ElseIf 20 * (i + 1) >= cel Then temp = temp + (cel - 20 * i) * Val("1." & k) Else temp = temp + 20 * Val("1." & k) End If Next hsluong = temp End Function
Theo yêu cầu mới nhất của Lãnh đạo, thay vì Hệ số lương được tính theo trích dẫn ở trên. Tháng này có sự thay đổi như sau:
Phần Doanh số 20 SP đầu tiên, Hệ số là 1.0
Phần Doanh từ 21 đến 40 SP, Hệ số là 1.1
Phần Doanh từ 41 đến 60 SP, Hệ số là 1.2
Phần Doanh từ 61 đến 80 SP, Hệ số là 1.3
Phần Doanh từ 81 đến 100 SP, Hệ số là 1.4
Phần Doanh từ 101 đến 120 SP, Hệ số là 1.5
Phần Doanh từ 121 đến 140 SP, Hệ số là 1.6
Phần Doanh từ 141 đến 160 SP, Hệ số là 1.7
Phần Doanh trên 161 SP, Hệ số là 1.8
Như vậy, Hệ số sẽ được tính như một số ví dụ sau:
DSo: 85 SP
HSL=(20*1.0)+(20*1.1)+(20*1.2)+(20*1.3)+(5*1.4)=99
DSo: 195 SP
HSL=(20*1.0)+(20*1.1)+(20*1.2)+(20*1.3)+(20*1.4)+(20*1.5)+(20*1.6)+(20*1.7)+(35*1.8)=279
Mình chưa tìm ra cách giải nào mà không dùng giá trị trung gian hoặc công thức nào tối ưu nhất cho bài toán này.
Rất mong các anh chị trong diễn đàn giúp đỡ
=IF(A1>160,(A1-160)*1.8+20*(1+1.7)/2*8,MOD(A1,20)*(1+TRUNC(A1/20)/10)+20*(1+1+(TRUNC(A1/20)-1)/10)/2*TRUNC(A1/20))
Bạn dùng code này bảo đảm luôn!
Thân.PHP:Function hsluong(cel As Integer) For i = 0 To Int(cel / 20) If i > 8 Then k = 8 Else: k = i If i = 0 Then temp = 20 ElseIf 20 * (i + 1) >= cel Then temp = temp + (cel - 20 * i) * Val("1." & k) Else temp = temp + 20 * Val("1." & k) End If Next hsluong = temp End Function
Công thức trong file này dài nhưng tổng quát, chỉ cần các mốc số lượng SP cách đều nhau, hệ số bất kỳ (không cách đều)Mình chưa tìm ra cách giải nào mà không dùng giá trị trung gian hoặc công thức nào tối ưu nhất cho bài toán này.
Mình cảm ơn bạn Tigertiger. Bạn có thể giúp mình xem còn cách nào để tận dụng ngay bảng hệ số cho sẵn không. Vì đây chỉ là ví dụ cho một dòng SP, còn các SP khác lại có bảng hệ số khác.
ptm0412 đã viết:Công thức trong file này dài nhưng tổng quát, chỉ cần các mốc số lượng SP cách đều nhau, hệ số bất kỳ (không cách đều)
Các bác cho em hỏi giùm. Em dùng hàm vlookup nhưng nhiều lúc trả về giá trị sai là nguyên nhân vì sao? có cách nào khắc phục ko?