Hỗ trợ công thức làm cơ sở đánh giá nhân viên

Liên hệ QC

thuydhktqd2001

Thành viên mới
Tham gia
14/6/08
Bài viết
20
Được thích
2
Kính gửi các anh/chị/em trong cộng đồng giaiphapexcel
Mình đang vướng mắc trong việc tìm công thức hiệu quả nhất để giải quyết bài toán tính số điểm sau khi có kết quả đánh giá nhân viên (theo file kèm theo)
Rất mong các cao thủ hỗ trợ và chia sẻ kinh nghiệm.
Trân trọng cảm ơn.
 

File đính kèm

Theo ngu kiến của tôi thì bạn cứ chèn đủ số hàng ở bảng PL4 cho đủ từ 6 đến 50 rồi Vlookup là nhanh nhất.
 
Kính gửi các anh/chị/em trong cộng đồng giaiphapexcel
Mình đang vướng mắc trong việc tìm công thức hiệu quả nhất để giải quyết bài toán tính số điểm sau khi có kết quả đánh giá nhân viên (theo file kèm theo)
Rất mong các cao thủ hỗ trợ và chia sẻ kinh nghiệm.
Trân trọng cảm ơn.
Thí dụ ở cell [F8] là tổng điểm, cell [G8] là kết quả, bạn nhập công thức này vào [G8]:
=INDEX($C$8:$C$28,MATCH(F8-0.1,--RIGHT($B$8:$B$28,2),-1))
Nhập xong "quánh" Ctrl + Shift + Enter
Thân
 
Thí dụ ở cell [F8] là tổng điểm, cell [G8] là kết quả, bạn nhập công thức này vào [G8]:
=INDEX($C$8:$C$28,MATCH(F8-0.1,--RIGHT($B$8:$B$28,2),-1))
Nhập xong "quánh" Ctrl + Shift + Enter
Thân
Cảm ơn bạn đã hỗ trợ nhưng mình thử theo cách của bạn mà trả về kết quả là 0 bạn ạ
 

File đính kèm

Kính gửi các anh/chị/em trong cộng đồng giaiphapexcel
Mình đang vướng mắc trong việc tìm công thức hiệu quả nhất để giải quyết bài toán tính số điểm sau khi có kết quả đánh giá nhân viên (theo file kèm theo)
Rất mong các cao thủ hỗ trợ và chia sẻ kinh nghiệm.
Trân trọng cảm ơn.
Của bạn đây. xem file đính kèm
Ở Ô E8 nhập E8=Diem(D8) và nhấn enter
Cấu trúc công thức =Diem( ô tham chiếu)
Mã:
Option Explicit
Function Diem(Rng As Range)
Dim i&, j&, t&, k&, Lr&
Dim Arr(), KQ(), temp
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")

With Sheet1
    Lr = .Cells(Rows.Count, 1).End(xlUp).Row
    Arr = .Range("B8:C" & Lr).Value
    ReDim KQ(1 To 50, 1 To 2)
For i = 1 To UBound(Arr)
    If Len(Arr(i, 1)) > 2 Then
        For k = Left(Arr(i, 1), 2) To Right(Arr(i, 1), 2)
            If Not dic.exists(k) Then
                t = t + 1
                dic.Add (k), t
                KQ(t, 1) = k: KQ(t, 2) = Arr(i, 2)
            End If
        Next k
    End If
    If Len(Arr(i, 1)) <= 2 Then
            If Not dic.exists(Arr(i, 1)) Then
                t = t + 1
                dic.Add (Arr(i, 1)), t
                KQ(t, 1) = Arr(i, 1): KQ(t, 2) = Arr(i, 2)
            End If
    End If
Next i
 temp = Rng.Value
If dic.exists(temp) Then Diem = KQ(dic.Item(temp), 2)
End With
End Function
 

File đính kèm

Kính gửi các anh/chị/em trong cộng đồng giaiphapexcel
Mình đang vướng mắc trong việc tìm công thức hiệu quả nhất để giải quyết bài toán tính số điểm sau khi có kết quả đánh giá nhân viên (theo file kèm theo)
Rất mong các cao thủ hỗ trợ và chia sẻ kinh nghiệm.
Trân trọng cảm ơn.
Trên công thức của Bác @concogia
Giả sử tổng điểm cột F
hệ số cột G
Bạn thử công thức:
G8: =INDEX($B$8:$C$28,MATCH($F8-0.4,a_1,-1),2)
Ctrl+Shift+Enter
 

File đính kèm

Sủa lại code ở bài #7 để tính được cả phần tổng điểm là số thập phân (13,2,...43,6)
Mã:
Option Explicit
Public Chk As Boolean, dic As Object, KQ()
Function Diem(Rng As Range)
Dim i&, j&, t&, k&, Lr&
Dim Arr(), KQ(), temp
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")

With Sheet1
    Lr = .Cells(Rows.Count, 1).End(xlUp).Row
    Arr = .Range("B8:C" & Lr).Value
    ReDim KQ(1 To 50, 1 To 2)
For i = 1 To UBound(Arr)
    If Len(Arr(i, 1)) > 2 Then
        For k = Left(Arr(i, 1), 2) To Right(Arr(i, 1), 2)
            If Not dic.exists(k) Then
                t = t + 1
                dic.Add (k), t
                KQ(t, 1) = k: KQ(t, 2) = Arr(i, 2)
            End If
        Next k
    End If
    If Len(Arr(i, 1)) <= 2 Then
            If Not dic.exists(Arr(i, 1)) Then
                t = t + 1
                dic.Add (Arr(i, 1)), t
                KQ(t, 1) = Arr(i, 1): KQ(t, 2) = Arr(i, 2)
            End If
    End If
Next i
 temp = Rng.Value
 If temp > 50 Then temp = 50
 If temp < 6 Then temp = 6
 If Len(Rng) > 2 Then
    If temp - Int(temp) > 0.5 Then
        temp = Int(temp) + 1
        Else
        temp = Int(temp)
     End If
End If
If dic.exists(temp) Then Diem = KQ(dic.Item(temp), 2)
End With
End Function
 

File đính kèm

Trên công thức của Bác @concogia
Giả sử tổng điểm cột F
hệ số cột G
Bạn thử công thức:
G8: =INDEX($B$8:$C$28,MATCH($F8-0.4,a_1,-1),2)
Ctrl+Shift+Enter
Đang bí thì gặp được công thức của bác, nhưng em thuộc dạng mù excel, bác có thể giải thích giúp em a_1 trong công thức là gì được k ah ?
 
Đang bí thì gặp được công thức của bác, nhưng em thuộc dạng mù excel, bác có thể giải thích giúp em a_1 trong công thức là gì được k ah ?
Bằng cách vào Formula =>Name Manager chọn Name click Edit bạn sẽ thấy kết quả.
Thân!
 
Web KT

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

Back
Top Bottom