Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

Liên hệ QC
Status
Không mở trả lời sau này.

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

----------------------------------------------------------------------------------------------------------------


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn này khó tính quá ta! Quan trọng là thủ tục chạy chứ cách trình bày đâu nè! Đây tôi đã làm dùm bạn đó rồi, và lưu ý, có sử dụng Font VNI đó nhé!

Mã:
Function Bulg(chucvu As String, ngaycong As Double, tongluong As Double)
    d_luongBQ = tongluong / ngaycong
    '=============================================
    If (chucvu <> "" And d_luongBQ > 0) Then
        If (Left(chucvu, 3) = "BÑH" And d_luongBQ < (Range("BÑH"))) Then
            Bulg = (Range("BÑH") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 3) = "KCS" And d_luongBQ < (Range("KCS"))) Then
            Bulg = (Range("KCS") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "MH") And Right(chucvu, 2) = "QC" And d_luongBQ < (Range("KCS")) Then
            Bulg = (Range("MH_QC") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "MH") And Right(chucvu, 2) <> "QC" Then
            Bulg = (Range("MH_TK") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("TKE_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("TKE_Tp") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "TK") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("TKE_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("CN_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("CN_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CN") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("CN_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("PC_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("PC_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PC") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("PC_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("XH_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("XH_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "XH") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("XH_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("CÑ_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("CÑ_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "CÑ") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("CÑ_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("PV_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("PV_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "PV") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("PV_TV") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) = "TT" Then
            Bulg = (Range("BX_TT") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) = "TP" Then
            Bulg = (Range("BX_TP") - d_luongBQ) * ngaycong
        ElseIf (Left(chucvu, 2) = "BX") And Right(chucvu, 2) <> "TT" And Right(chucvu, 2) <> "TP" Then
            Bulg = (Range("BX_TV") - d_luongBQ) * ngaycong
        End If
    End If
End Function


Vân chưa có gì thay đổi mà anh
 
Upvote 0
Vân chưa có gì thay đổi mà anh
Đây là anh nghĩa giúp bạn trình bày lại code!
bạn up hẳn file excle lên để tham khảo nào, mà cho hỏi công thức bù lương này dùng hàm trên excel cũng được , sao phải viết code làm chi cho mệt
 
Lần chỉnh sửa cuối:
Upvote 0
Em gởi lại

bạn up hẳn file excle , lên để tham khảo nào, mà cho hỏi công thức bù lương này dùng hàm trên excel cũng được , sao phải viết code làm chi cho mệt


Công thức thì do nó có nhiều điều kiên quá nên em mới dung VBA

Mà ở đây em chỉ qui định mức lương TT, TP, và TV
TV thì các trường hợp không phải là TT, hoặc TP
 

File đính kèm

  • BU LUONG (1).rar
    43.2 KB · Đọc: 23
Upvote 0
Bước đầu nên là vầy: . . . .

PHP:
Option Explicit
Function Bulg(ChucVu As String, NgayCong As Double, TongLuong As Double)
 Dim D_LuongBQ As Double, Rng As Range
 
 If NgayCong <= 0 Then Exit Function  '***'
 D_LuongBQ = TongLuong / NgayCong
'=  =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   ='
If (ChucVu <> "" And D_LuongBQ > 0) Then
    If (Left(ChucVu, 3) = "BÑH" And D_LuongBQ < (Range("BÑH"))) Then
        Set Rng = Range("BÑH")
    
    ElseIf (Left(ChucVu, 3) = "KCS" And D_LuongBQ < (Range("KCS"))) Then
        Set Rng = Range("KCS")
        
    ElseIf (Left(ChucVu, 2) = "MH") And Right(ChucVu, 2) = "QC" And D_LuongBQ < (Range("KCS")) Then
        Set Rng = Range("MH_QC")
    ElseIf (Left(ChucVu, 2) = "MH") And Right(ChucVu, 2) <> "QC" Then
        Set Rng = Range("MH_TK")
    
    ElseIf (Left(ChucVu, 2) = "TK") And Right(ChucVu, 2) = "TT" Then
        Set Rng = Range("TKE_TT")
    ElseIf (Left(ChucVu, 2) = "TK") And Right(ChucVu, 2) = "TP" Then
        Set Rng = Range("TKE_Tp")
    ElseIf (Left(ChucVu, 2) = "TK") And Right(ChucVu, 2) <> "TT" And Right(ChucVu, 2) <> "TP" Then
        Set Rng = Range("TKE_TV")
    
    ElseIf (Left(ChucVu, 2) = "CN") And Right(ChucVu, 2) = "TT" Then
        Set Rng = Range("CN_TT")
    ElseIf (Left(ChucVu, 2) = "CN") And Right(ChucVu, 2) = "TP" Then
        Set Rng = Range("CN_TP")
    ElseIf (Left(ChucVu, 2) = "CN") And Right(ChucVu, 2) <> "TT" And Right(ChucVu, 2) <> "TP" Then
        Set Rng = Range("CN_TV")
    
    ElseIf (Left(ChucVu, 2) = "PC") And Right(ChucVu, 2) = "TT" Then
        Set Rng = Range("PC_TT")
    ElseIf (Left(ChucVu, 2) = "PC") And Right(ChucVu, 2) = "TP" Then
        Set Rng = Range("PC_TP")
    ElseIf (Left(ChucVu, 2) = "PC") And Right(ChucVu, 2) <> "TT" And Right(ChucVu, 2) <> "TP" Then
        Set Rng = Range("PC_TV")
    
    ElseIf (Left(ChucVu, 2) = "XH") And Right(ChucVu, 2) = "TT" Then
        Set Rng = Range("XH_TT")
    ElseIf (Left(ChucVu, 2) = "XH") And Right(ChucVu, 2) = "TP" Then
        Set Rng = Range("XH_TP")
    ElseIf (Left(ChucVu, 2) = "XH") And Right(ChucVu, 2) <> "TT" And Right(ChucVu, 2) <> "TP" Then
        Set Rng = Range("XH_TV")
    
    ElseIf (Left(ChucVu, 2) = "CÑ") And Right(ChucVu, 2) = "TT" Then
        Set Rng = Range("CÑ_TT")
    ElseIf (Left(ChucVu, 2) = "CÑ") And Right(ChucVu, 2) = "TP" Then
        Set Rng = Range("CÑ_TP")
    ElseIf (Left(ChucVu, 2) = "CÑ") And Right(ChucVu, 2) <> "TT" And Right(ChucVu, 2) <> "TP" Then
        Set Rng = Range("CÑ_TV")
    
    ElseIf (Left(ChucVu, 2) = "PV") And Right(ChucVu, 2) = "TT" Then
        Set Rng = Range("PV_TT")
    ElseIf (Left(ChucVu, 2) = "PV") And Right(ChucVu, 2) = "TP" Then
        Set Rng = Range("PV_TP")
    ElseIf (Left(ChucVu, 2) = "PV") And Right(ChucVu, 2) <> "TT" And Right(ChucVu, 2) <> "TP" Then
        Set Rng = Range("PV_TV")
    
    ElseIf (Left(ChucVu, 2) = "BX") And Right(ChucVu, 2) = "TT" Then
        Set Rng = Range("BX_TT")
    ElseIf (Left(ChucVu, 2) = "BX") And Right(ChucVu, 2) = "TP" Then
        Set Rng = Range("BX_TP")
    ElseIf (Left(ChucVu, 2) = "BX") And Right(ChucVu, 2) <> "TT" And Right(ChucVu, 2) <> "TP" Then
        Set Rng = Range("BX_TV")
    End If
    
    'Còn Cau Lenh Nua Xin Dành Cho Ban!'
    
End If
End Function
 
Upvote 0
Vân chưa có gì thay đổi mà anh

Tôi có làm gì trong đó đâu mà nó thay đổi! Giờ mới làm nè:

Mã:
Function Bulg(chucvu As String, ngaycong As Double, tongluong As Double) As Double
    If chucvu = "" Or ngaycong = 0 Then Exit Function
    '-----------------------------------------------------------------
    Dim d_luongBQ As Double
        d_luongBQ = tongluong / ngaycong
    If d_luongBQ = 0 Then Exit Function
    '-----------------------------------------------------------------
    Dim LeftChucVu2 As String, LeftChucVu3 As String, RightChucVu As String
        LeftChucVu2 = Left(chucvu, 2)
        LeftChucVu3 = Left(chucvu, 3)
        RightChucVu = Right(chucvu, 2)
    '-----------------------------------------------------------------
    If LeftChucVu3 = "BÑH" And d_luongBQ < Range("BÑH") Then
        Bulg = (Range("BÑH") - d_luongBQ) * ngaycong
    ElseIf LeftChucVu3 = "KCS" And d_luongBQ < Range("KCS") Then
        Bulg = (Range("KCS") - d_luongBQ) * ngaycong
    End If
    Exit Function
    '-----------------------------------------------------------------
    If LeftChucVu2 = "MH" Then
        If RightChucVu = "QC" Then
            If d_luongBQ < Range("KCS") Then
                Bulg = (Range("MH_QC") - d_luongBQ) * ngaycong
            End If
        Else
            Bulg = (Range("MH_TK") - d_luongBQ) * ngaycong
        End If
    End If
    Exit Function
    '-----------------------------------------------------------------
    Select Case RightChucVu
    Case "TT"
        Select Case LeftChucVu2
            Case "TK": Bulg = (Range("TKE_TT") - d_luongBQ) * ngaycong
            Case "CN": Bulg = (Range("CN_TT") - d_luongBQ) * ngaycong
            Case "PC": Bulg = (Range("PC_TT") - d_luongBQ) * ngaycong
            Case "XH": Bulg = (Range("XH_TT") - d_luongBQ) * ngaycong
            Case "CÑ": Bulg = (Range("CÑ_TT") - d_luongBQ) * ngaycong
            Case "PV": Bulg = (Range("PV_TT") - d_luongBQ) * ngaycong
            Case "BX": Bulg = (Range("BX_TT") - d_luongBQ) * ngaycong
        End Select
    Case "TP"
        Select Case LeftChucVu2
            Case "TK": Bulg = (Range("TKE_Tp") - d_luongBQ) * ngaycong
            Case "CN": Bulg = (Range("CN_TP") - d_luongBQ) * ngaycong
            Case "PC": Bulg = (Range("PC_TP") - d_luongBQ) * ngaycong
            Case "XH": Bulg = (Range("XH_TP") - d_luongBQ) * ngaycong
            Case "CÑ": Bulg = (Range("CÑ_TP") - d_luongBQ) * ngaycong
            Case "PV": Bulg = (Range("PV_TP") - d_luongBQ) * ngaycong
            Case "BX": Bulg = (Range("BX_TP") - d_luongBQ) * ngaycong
        End Select
    Case Else
        Select Case LeftChucVu2
            Case "TK": Bulg = (Range("TKE_TV") - d_luongBQ) * ngaycong
            Case "CN": Bulg = (Range("CN_TV") - d_luongBQ) * ngaycong
            Case "PC": Bulg = (Range("PC_TV") - d_luongBQ) * ngaycong
            Case "XH": Bulg = (Range("XH_TV") - d_luongBQ) * ngaycong
            Case "CÑ": Bulg = (Range("CÑ_TV") - d_luongBQ) * ngaycong
            Case "PV": Bulg = (Range("PV_TV") - d_luongBQ) * ngaycong
            Case "BX": Bulg = (Range("BX_TV") - d_luongBQ) * ngaycong
        End Select
    End Select
End Function

Lưu ý: Tôi chỉ làm theo code bạn đưa lên (không phải xem qua cái file) đúng sai ta tính tiếp, nhưng tôi có một chút thắc mắc là tại sao dùng NAME mà gõ dấu tiếng Việt vào làm chi không biết nữa! Chẳng hạn: Range("CÑ_TV")
 
Upvote 0
Cho mình hỏi cách làm răng cưa như thế nào vây?

Bạn hãy cài IndenterVBA.exe và làm theo hướng dẫn tại http://www.giaiphapexcel.com/forum/...-nghị-các-bạn-gửi-vào-đây&p=459998#post459998
Trước đây tôi chưa có Excel 2010 nên nghĩ rằng nó chỉ chạy được với Excel 2003 về trước (như giới thiệu tại đây). Thực ra nó chạy được tuốt với cả Excel 2010.
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu mã chức vụ của bạn thực sự khoa học thì chương trình sẽ ngắn gọn đi rất nhiều

Ví dụ:
Ma|Chức vụ|ĐơnVị
GD|Ban Giám đốc|..
TT|Tổ trưởng|Phòng TK
TF|Tổ fó|Phòng TK
TN|Nhân viên|Phòng TK
..|..|
--=0|)(&&@@|:=\+
 
Upvote 0
Ví dụ:
Ma|Chức vụ|ĐơnVị
GD|Ban Giám đốc|..
TT|Tổ trưởng|Phòng TK
TF|Tổ fó|Phòng TK
TN|Nhân viên|Phòng TK
..|..|
--=0|)(&&@@|:=\+
Vậy bạn có thể sắp sếp lại giúp mình với được ko?

Mỗi chức danh theo từng bộ phận có 1 số tiền khác nhau
Lưu ý: Chỉ phân biêt TT và TP. Còn chức danh TV thì có thể không hẳn là TV không mà có thể là RT, hoặc BT hoặc B1,
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy bạn có thể sắp sếp lại giúp mình với được ko?

Mỗi chức danh theo từng bộ phận có 1 số tiền khác nhau
Lưu ý: Chỉ phân biêt TT và TP. Còn chức danh TV thì có thể không hẳn là TV không mà có thể là RT, hoặc BT hoặc B1,

Sao bạn phải khổ sở với công thức , với VBA vậy

sao không dùng VLOOKUP đơn giản

trong file tôi chỉ sửa 3 mã (của Range range gì đó của bạn)

TKE_TT
TKE_TP
TKE_TV

thành

TK_TT
TK_TP
TK_TV

và thấy thiếu mã PC_PV
nên tạm bổ sung ở dòng 35 (Q35,R35 - tạm lấy 120 000) - đã bôi đỏ nhé

sd công thức thôgn thường,

với M10:
=+VLOOKUP(E10,$Q$10:$R$35,2,0)*J10-K10

xoá hết NAME và Module VBA đi cho nhẹ văn khoẻ nhé

túm lại là bạn kiểm tra lại xem đúng mong muốn không, tôi chỉ suy luận theo code của bạn - nên sai đúng bạn là người kiểm tra

down file kèm về sẽ rõ
 

File đính kèm

  • BU LUONG.xlsx
    85.3 KB · Đọc: 3
Lần chỉnh sửa cuối:
Upvote 0
Tôi có làm gì trong đó đâu mà nó thay đổi! Giờ mới làm nè:

Mã:
Function Bulg(chucvu As String, ngaycong As Double, tongluong As Double) As Double
    If chucvu = "" Or ngaycong = 0 Then Exit Function
    '-----------------------------------------------------------------
    Dim d_luongBQ As Double
        d_luongBQ = tongluong / ngaycong
    If d_luongBQ = 0 Then Exit Function
    '-----------------------------------------------------------------
    Dim LeftChucVu2 As String, LeftChucVu3 As String, RightChucVu As String
        LeftChucVu2 = Left(chucvu, 2)
        LeftChucVu3 = Left(chucvu, 3)
        RightChucVu = Right(chucvu, 2)
    '-----------------------------------------------------------------
    If LeftChucVu3 = "BÑH" And d_luongBQ < Range("BÑH") Then
        Bulg = (Range("BÑH") - d_luongBQ) * ngaycong
    ElseIf LeftChucVu3 = "KCS" And d_luongBQ < Range("KCS") Then
        Bulg = (Range("KCS") - d_luongBQ) * ngaycong
    End If
    Exit Function
    '-----------------------------------------------------------------
    If LeftChucVu2 = "MH" Then
        If RightChucVu = "QC" Then
            If d_luongBQ < [COLOR=#ff0000]Range("KCS")[/COLOR] Then
                Bulg = (Range("MH_QC") - d_luongBQ) * ngaycong
            End If
        Else
            Bulg = (Range("MH_TK") - d_luongBQ) * ngaycong
        End If
    End If
    Exit Function
    '-----------------------------------------------------------------
    Select Case RightChucVu
    Case "TT"
        Select Case LeftChucVu2
            Case "TK": Bulg = (Range("TKE_TT") - d_luongBQ) * ngaycong
            Case "CN": Bulg = (Range("CN_TT") - d_luongBQ) * ngaycong
            Case "PC": Bulg = (Range("PC_TT") - d_luongBQ) * ngaycong
            Case "XH": Bulg = (Range("XH_TT") - d_luongBQ) * ngaycong
            Case "CÑ": Bulg = (Range("CÑ_TT") - d_luongBQ) * ngaycong
            Case "PV": Bulg = (Range("PV_TT") - d_luongBQ) * ngaycong
            Case "BX": Bulg = (Range("BX_TT") - d_luongBQ) * ngaycong
        End Select
    Case "TP"
        Select Case LeftChucVu2
            Case "TK": Bulg = (Range("TKE_Tp") - d_luongBQ) * ngaycong
            Case "CN": Bulg = (Range("CN_TP") - d_luongBQ) * ngaycong
            Case "PC": Bulg = (Range("PC_TP") - d_luongBQ) * ngaycong
            Case "XH": Bulg = (Range("XH_TP") - d_luongBQ) * ngaycong
            Case "CÑ": Bulg = (Range("CÑ_TP") - d_luongBQ) * ngaycong
            Case "PV": Bulg = (Range("PV_TP") - d_luongBQ) * ngaycong
            Case "BX": Bulg = (Range("BX_TP") - d_luongBQ) * ngaycong
        End Select
    Case Else
        Select Case LeftChucVu2
            Case "TK": Bulg = (Range("TKE_TV") - d_luongBQ) * ngaycong
            Case "CN": Bulg = (Range("CN_TV") - d_luongBQ) * ngaycong
            Case "PC": Bulg = (Range("PC_TV") - d_luongBQ) * ngaycong
            Case "XH": Bulg = (Range("XH_TV") - d_luongBQ) * ngaycong
            Case "CÑ": Bulg = (Range("CÑ_TV") - d_luongBQ) * ngaycong
            Case "PV": Bulg = (Range("PV_TV") - d_luongBQ) * ngaycong
            Case "BX": Bulg = (Range("BX_TV") - d_luongBQ) * ngaycong
        End Select
    End Select
End Function

Lưu ý: Tôi chỉ làm theo code bạn đưa lên (không phải xem qua cái file) đúng sai ta tính tiếp, nhưng tôi có một chút thắc mắc là tại sao dùng NAME mà gõ dấu tiếng Việt vào làm chi không biết nữa! Chẳng hạn: Range("CÑ_TV")





Em đã đưa code vào rồi nhưng nó chi đúng với trường của BĐH và KCS. Các bộ phận còn lại thì không ra kết quả. (Em gởi file đính kèm)
Anh xem giúp em.
Sao mà đoạn này kỳ vậy anh (màu đỏ)
Mã:
If LeftChucVu2 = "MH" Then
        If RightChucVu = "QC" Then
            If d_luongBQ < [COLOR=#FF0000]Range("KCS")[/COLOR] Then
                Bulg = (Range("MH_QC") - d_luongBQ) * ngaycong
            End If
        Else
            Bulg = (Range("MH_TK") - d_luongBQ) * ngaycong
        End If
    End If
    Exit Function
 

File đính kèm

  • BU LUONG.rar
    39.7 KB · Đọc: 14
Lần chỉnh sửa cuối:
Upvote 0
Theo mình biết, cơ quan bạn đến 70 chức danh khác nhau, tại . . .

http://www.giaiphapexcel.com/forum/showthread.php?78684-Lọc-dữ-liệu-theo-điều-kiện

Bạn hãy lập ra bảng như dưới đây cho 70 chức danh đó đi;

Bộ fận| Chức vụ|Đơn vị|Hệ số bù lương
GSV|?|?|?
Bảo trì NV|NV|Bảo trì|?
Bảo trì TF|Tổ fó|Bảo trì|?
Bảo trì TT|Tổ trưởng|Bảo trì|?
. . .||. . .|

Lúc đó người nào giúp sẽ giải quyết cho bạn 1 lần;
Tránh bạn mỗi bài hỏi lại thêm 1 chút; Sau đó lại đi chổ khác hỏi tiếp
 
Upvote 0
http://www.giaiphapexcel.com/forum/showthread.php?78684-Lọc-dữ-liệu-theo-điều-kiện

Bạn hãy lập ra bảng như dưới đây cho 70 chức danh đó đi;

Bộ fận| Chức vụ|Đơn vị|Hệ số bù lương
GSV|?|?|?
Bảo trì NV|NV|Bảo trì|?
Bảo trì TF|Tổ fó|Bảo trì|?
Bảo trì TT|Tổ trưởng|Bảo trì|?
. . .||. . .|

Lúc đó người nào giúp sẽ giải quyết cho bạn 1 lần;
Tránh bạn mỗi bài hỏi lại thêm 1 chút; Sau đó lại đi chổ khác hỏi tiếp
Mình cảm ơn bạn! Nhưng bạn hiểu nhầm ý rồi. Những chức danh trong bảng của Bạn thì đâu có cần bù. Họ hưởng lương khoán mà.
Minh gởi bảng ví du về qui định bù


MUCBU.jpg
 

File đính kèm

  • MUCBU.jpg
    MUCBU.jpg
    19.4 KB · Đọc: 45
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Em đã đưa code vào rồi nhưng nó chi đúng với trường của BĐH và KCS. Các bộ phận còn lại thì không ra kết quả. (Em gởi file đính kèm)
Anh xem giúp em.

Tôi hỏi bạn nhé, ở cột E có mã công việc là TK-TT, ở cột P (trong bảng tra mức bù) cũng có TK-TT, nói chung là cột E có mã nào, thì cột P cũng có mã đó, vậy tại sao không dùng hàm VLOOKUP để tra bảng cho nhanh, cần gì phải tính LEFT(CV,2), RIGHT(CV,2) làm chi vậy?
 
Upvote 0
Các anh chị trong diễn đàn cho em hỏi: em đang làm file (có lẽ cũng do bấm nhầm phím nào đó) mà tự nhiên chỉ 1 click chuột thôi nhưng nó cứ tự bôi đen nhiều ô, có khi là 3 ô, có khi là 4 ô, nhưng chỉ ở trong file đó thôi, nếu em mở file mới thì lại ko bị thế (nên em đoán là do em bấm nhầm phím nào đó khi đang làm). Có lần em bấm lung tung rồi tắt đi khởi động lại file đó thì lại trở về bt, nhưng có khi thì chẳng được.

Vậy nhờ các bác/anh/chị trên diễn đàn chỉ giúp em nguyên nhân và cách chữa với ạ.

Em cảm ơn nhiều!

PLHT

Mình thì chỉ mong có cao thủ giúp được mình làm code để có cái lỗi như bạn.

Mình đang tìm cái code tự động bôi đen khoảng 5 ô trên một dòng.
 
Upvote 0
Không hẳn là bên cột E có gì thì bên cột B có đó. Nó chỉ đúng với 1 số chức danh đầu thôi. Chẳng hặn nhưở tổ PC, thì trongđố nó có PC-TT, PC-TP và PC-TV hoặc PC-PV. File em gởi lên chỉ là VD 1 số chức danh thôi.
Trong khi bảng qui định thì chỉ có qui định cho PC-TT, và PC-TP, và PC-TV. Các chức danh <> PC-TT, PC-TP thì lấy chung mức PC-TV
 
Upvote 0
Mình thì chỉ mong có cao thủ giúp được mình làm code để có cái lỗi như bạn.

Mình đang tìm cái code tự động bôi đen khoảng 5 ô trên một dòng.
Cái vụ này thì dễ ẹc à, chỉ cần như vầy thôi:
[GPECODE=vb]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Resize(5).Select
End Sub[/GPECODE]
(Không biết có đúng ý bạn không nhỉ?!)
 
Upvote 0
Mình thì chỉ mong có cao thủ giúp được mình làm code để có cái lỗi như bạn.

Mình đang tìm cái code tự động bôi đen khoảng 5 ô trên một dòng.
Bạn xem file này đi, bấm vào bất kỳ ô nào, tự động chọn 5 ô kế tiếp bên phải!
(Cái này chưa chắc đã là "tiện" đâu nhé, chỉ sợ lại thành "bất tiện")
 

File đính kèm

  • Tu dong chon vung.xls
    20.5 KB · Đọc: 8
Upvote 0
Không hẳn là bên cột E có gì thì bên cột B có đó. Nó chỉ đúng với 1 số chức danh đầu thôi. Chẳng hặn nhưở tổ PC, thì trongđố nó có PC-TT, PC-TP và PC-TV hoặc PC-PV. File em gởi lên chỉ là VD 1 số chức danh thôi.
Trong khi bảng qui định thì chỉ có qui định cho PC-TT, và PC-TP, và PC-TV. Các chức danh <> PC-TT, PC-TP thì lấy chung mức PC-TV

Nếu bạn muốn tôi làm một hàm tổng quát, ngắn gọn, nhanh, dễ hiểu thì bạn gửi cái file đầy đủ lên và cột kết quả đã tính mong muốn của bạn. Tôi sẽ dễ dàng hình dung một cách khái quát nhất. Nếu dung lương file quá lớn thì nén lại nhé!
 
Upvote 0
Cái vụ này thì dễ ẹc à, chỉ cần như vầy thôi:
[GPECODE=vb]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Resize(5).Select
End Sub[/GPECODE]
(Không biết có đúng ý bạn không nhỉ?!)
Đọc bài của bác xong mới thấy hình như em suy nghĩ rất máy móc!!!
 
Upvote 0
Mình cảm ơn bạn! Nhưng bạn hiểu nhầm ý rồi. Những chức danh trong bảng của Bạn thì đâu có cần bù. Họ hưởng lương khoán mà.
Minh gởi bảng ví du về qui định bù

View attachment 100836
Đã có bảng để dò thì dùng hàm Excel cũng được mà, Bạn xem công thức trong cột N.
Hay bạn muốn hàm tự tạo thì công thức trong cột O, cũng cùng cách dò tìm thôi.
Nếu kết quả chưa đúng thì giải thích lại cách tính toán.
Yêu cầu: Muốn bù lương cho mã nào thì mã đó phải có trong cột R
 

File đính kèm

  • BuLuong.rar
    31.6 KB · Đọc: 2
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom