Hàm INDEX có lỗi

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

tzboy

Thành viên mới
Tham gia
17/4/10
Bài viết
19
Được thích
1
Các bác xem giúp em hàm INDEX ở sheet Tính lương CB, cột HS lương của Lương CB trước khi thay đổi và HS Lương của Lương CB hiện tại. Các bác xem giúp em sớm nhé, em cảm ơn các bác trước.

Cái hệ số lương có hệ số nó trả về 0 các bác ạ, mà em muốn là bậc lương có vượt quá hệ số lương cho phép thì nó vẫn trả được về giá trị hệ số lương cao nhất của bậc lương đó. VD: Chức danh GD chỉ có 2 bậc lương 1 và 2, nếu để bậc lương GD là 9 (quá 1,2) thì nó sẽ trả về hệ số lương là 0 nhưng em muốn nó trả về hệ số lương cao nhất của bậc cao nhất trong nghạch lương GD thì sẽ phải làm thế nào ạ?
 

File đính kèm

Lần chỉnh sửa cuối:
Các bác xem giúp em hàm INDEX ở sheet Tính lương CB, cột HS lương của Lương CB trước khi thay đổi và HS Lương của Lương CB hiện tại. Các bác xem giúp em sớm nhé, em cảm ơn các bác trước.

Hệ số lương trước khi thay đổi thì không sao, nhưng cái Index hiện tại (tại ô V7) thì phải:
PHP:
=INDEX('Bang Luong CB'!$E$4:$P$9,MATCH('Tinh luong CB'!S7,'Bang Luong CB'!$D$4:$D$9,0),MATCH('Tinh luong CB'!T7,'Bang Luong CB'!$E$3:$P$3,0))
xong rồi fill xuống
 
Bác ơi nếu làm như bác nói thì với chức danh GD, PGD và một số chức danh khác không đủ 12 bậc trong nghạch lương nó sẽ không hiện đựơc hệ số lương bác ạ. VD: GD có lương bậc 9 của ngạch N1, nhưng trong ngạch N1 chỉ có lương đến bậc 2 nên làm thế kia nó sẽ trả về giá trị là 0. Còn nếu em muốn có tăng bao nhiêu bậc đi chăng nữa nhưng nó sẽ trả về giá trị lớn nhất trong ngạch lương GD là 5.65 thì làm sao hả bác?
 
Bác ơi nếu làm như bác nói thì với chức danh GD, PGD và một số chức danh khác không đủ 12 bậc trong nghạch lương nó sẽ không hiện đựơc hệ số lương bác ạ. VD: GD có lương bậc 9 của ngạch N1, nhưng trong ngạch N1 chỉ có lương đến bậc 2 nên làm thế kia nó sẽ trả về giá trị là 0. Còn nếu em muốn có tăng bao nhiêu bậc đi chăng nữa nhưng nó sẽ trả về giá trị lớn nhất trong ngạch lương GD là 5.65 thì làm sao hả bác?

Cái này thì có thể làm được
PHP:
=IF(INDEX('Bang Luong CB'!$E$4:$P$9,MATCH(S7,'Bang Luong CB'!$D$4:$D$9,0),MATCH('Tinh luong CB'!T7,'Bang Luong CB'!$E$3:$P$3,0))=0,MAX(OFFSET('Bang Luong CB'!$D$4,MATCH('Tinh luong CB'!S7,'Bang Luong CB'!$D$4:$D$9,0)-1,1,,12)),INDEX('Bang Luong CB'!$E$4:$P$9,MATCH(S7,'Bang Luong CB'!$D$4:$D$9,0),MATCH('Tinh luong CB'!T7,'Bang Luong CB'!$E$3:$P$3,0)))
nhưng tôi nghĩ, vấn đề ở chỗ "Bậc lương" và "Ngạch lương" của bạn?
Sao không xử lý cái đó đi (VD: như N1 thì có đến bậc 2 là 5.65 thì sao không để ở Bậc lương hiện tại là Bậc 2 (Sheet Tinh luong CB - Cột T) thôi, lại để bậc 9 làm chi khi nó không tồn tại...Các trường hợp khác cũng tương tự...
 
Lần chỉnh sửa cuối:
Bác ơi nếu làm như bác nói thì với chức danh GD, PGD và một số chức danh khác không đủ 12 bậc trong nghạch lương nó sẽ không hiện đựơc hệ số lương bác ạ. VD: GD có lương bậc 9 của ngạch N1, nhưng trong ngạch N1 chỉ có lương đến bậc 2 nên làm thế kia nó sẽ trả về giá trị là 0. Còn nếu em muốn có tăng bao nhiêu bậc đi chăng nữa nhưng nó sẽ trả về giá trị lớn nhất trong ngạch lương GD là 5.65 thì làm sao hả bác?
Đúng như Bạn dat_butmuc đã nghĩ, rõ là hơi bị "không hiểu" lắm.
nhưng tôi nghĩ, vấn đề ở chỗ "Bậc lương" và "Ngạch lương" của bạn?
Sao không xử lý cái đó đi (VD: như N1 thì có đến bậc 2 là 5.65 thì sao không để ở Bậc lương hiện tại là Bậc 2 (Sheet Tinh luong CB - Cột T) thôi, lại để bậc 9 làm chi khi nó không tồn tại...Các trường hợp khác cũng tương tự...
Bạn xem thử thế này có đúng ý Bạn không?
 

File đính kèm

Cái này thì có thể làm được
PHP:
=IF(INDEX('Bang Luong CB'!$E$4:$P$9,MATCH(S7,'Bang Luong CB'!$D$4:$D$9,0),MATCH('Tinh luong CB'!T7,'Bang Luong CB'!$E$3:$P$3,0))=0,MAX(OFFSET('Bang Luong CB'!$D$4,MATCH('Tinh luong CB'!S7,'Bang Luong CB'!$D$4:$D$9,0)-1,1,,12)),INDEX('Bang Luong CB'!$E$4:$P$9,MATCH(S7,'Bang Luong CB'!$D$4:$D$9,0),MATCH('Tinh luong CB'!T7,'Bang Luong CB'!$E$3:$P$3,0)))
nhưng tôi nghĩ, vấn đề ở chỗ "Bậc lương" và "Ngạch lương" của bạn?
Sao không xử lý cái đó đi (VD: như N1 thì có đến bậc 2 là 5.65 thì sao không để ở Bậc lương hiện tại là Bậc 2 (Sheet Tinh luong CB - Cột T) thôi, lại để bậc 9 làm chi khi nó không tồn tại...Các trường hợp khác cũng tương tự...
tôi cũng đồng ý với đại ca
sao tác giả không dùng thế này nhỉ
=IF(VLOOKUP(K7,'Bang Luong CB'!$D$3:$Q$9,'Tinh luong CB'!L7+1,0)=0,VLOOKUP(K7,'Bang Luong CB'!$D$3:$Q$9,14,0),VLOOKUP(K7,'Bang Luong CB'!$D$3:$Q$9,'Tinh luong CB'!L7+1,0))
 

File đính kèm

Bác dat_butmuc ơi công thức của bác rất ổn nhưng nó có chỗ bị mắc bác ạ, đó là ở hệ số lương của bậc 5 ngạch 6 nó tính ra là 3.27 trong khi đúng phải là 2.56 bác ạ
Hệ số của bậc 4 ngạch 6 cũng sai, công thức tính ra là 2.96 trong khi đúng của nó là 2.37. Bác xem giúp em với nhé.
 
"Rất ổn" mà lại "bị mắc"

Bác dat_butmuc ơi công thức của bác rất ổn nhưng nó có chỗ bị mắc bác ạ, đó là ở hệ số lương của bậc 5 ngạch 6 nó tính ra là 3.27 trong khi đúng phải là 2.56 bác ạ
Hệ số của bậc 4 ngạch 6 cũng sai, công thức tính ra là 2.96 trong khi đúng của nó là 2.37. Bác xem giúp em với nhé.

Ủa, bạn kiểm tra kỹ chưa?
Thử gửi file mà bạn nói nó bị "mắc" lên được không ?
 
Nó vẫn là file ở bài đầu tiên của topic mà bác, em chỉ áp công thức của bác vào thôi.
Đây em xin gửi lại file
 

File đính kèm

Nó vẫn là file ở bài đầu tiên của topic mà bác, em chỉ áp công thức của bác vào thôi.
Đây em xin gửi lại file
Công thúc của dat_butmuc là dùng cho cột V, Bạn chép vào cột M thì phải sai thôi.
Muốn chép vào cột M phải chỉnh địa chỉ lại chứ. (Bạn có thấy chữ S và chữ T trong công thức không?)
 
Nó vẫn là file ở bài đầu tiên của topic mà bác, em chỉ áp công thức của bác vào thôi.
Đây em xin gửi lại file

À, tôi thấy rồi - thì ra Bạn áp dụng máy móc quá nên bị nhầm lẫn.
Cái công thức trước tôi gửi là áp dụng cho "Lương CB hiện tại" nên tham chiếu theo "Ngạch lương - Cột S" và "Bậc lương - Cột T"
Bạn lại vác cái công thức đó áp dụng cho "Lương CB trước khi thay đổi" mà không thay đổi cột tham chiếu - có nghĩa là Cột K và Cột L.

Bạn xem nhưng chỗ tôi đánh dấu đỏ nhé:
=IF(INDEX('Bang Luong CB'!$E$4:$P$9,MATCH(K7,'Bang Luong CB'!$D$4:$D$9,0),MATCH('Tinh luong CB'!L7,'Bang Luong CB'!$E$3:$P$3,0))=0,MAX(OFFSET('Bang Luong CB'!$D$4,MATCH('Tinh luong CB'!K7,'Bang Luong CB'!$D$4:$D$9,0)-1,1,,12)),INDEX('Bang Luong CB'!$E$4:$P$9,MATCH(K7,'Bang Luong CB'!$D$4:$D$9,0),MATCH('Tinh luong CB'!L7,'Bang Luong CB'!$E$3:$P$3,0)))

P/s: Bài này không nhất thiết là dùng Index, còn một số cách khác hay hơn như LeDuyThuong hay Bate đã làm.
 
Món mới đây

PHP:
Option Explicit
Function HeSoLuong(Ngach As Range, Bac As Range) As Double
 'Range("BLuong").Address ='Bang Luong CB'!$D$4:$Q$9 '
 Dim Clls As Range, Rng As Range
 Dim Rws As Long, Col As Byte, Cot As Byte
 
 Rws = Range("BLuong").Rows.Count
 Col = Range("BLuong").Columns.Count + 1
 Set Rng = Range("BLuong").Cells(1, 1).Resize(Rws)
 Set Clls = Rng.Find(Ngach, , xlFormulas, xlWhole)
 If Not Clls Is Nothing Then
   Cot = Clls.Offset(, Col).End(xlToLeft).Column - Clls.Column
   If Cot < Bac.Value Then
      HeSoLuong = Clls.Offset(, Cot).Value
   Else
      HeSoLuong = Clls.Offset(, Bac.Value)
   End If
 End If
End Function
Ví dụ tại V11 ta nhập công thức =HeSoLuong(S11,T11)

& chúc vui.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom