Xử lý dữ liệu và trích lọc quá trình tham gia BHXH

Liên hệ QC

Hoang Thanh Hai

Thành viên mới
Tham gia
10/3/08
Bài viết
7
Được thích
1
Chào các Anh Chị Thành Viên GPE,

Mình đang xử lý dữ liệu và trích lọc quá trình tham gia BHXH của nhân viên nhưng vẫn chưa tìm ra cách làm hiệu quả nhất. Mình gửi kèm file, rất mong các Pác cao thủ giúp đỡ! Xin cảm ơn các Pác nhiều!

Dữ liệuSố sổ BHXHTênMức lươngTháng0200051766Nguyen Van A 3,000,000 Jan.090200051767Nguyen Thi B 3,000,000 Jan.090200051768Nguyen Van C 3,000,000 Jan.090200051769Nguyen Anh D 3,000,000 Jan.090200051766Nguyen Van A 3,000,000 Feb.090200051767Nguyen Thi B 3,000,000 Feb.090200051768Nguyen Van C 3,000,000 Feb.090200051769Nguyen Anh D 3,000,000 Feb.090200051766Nguyen Van A 4,000,000 Mar.090200051767Nguyen Thi B 4,000,000 Mar.090200051768Nguyen Van C 4,000,000 Mar.090200051769Nguyen Anh D 4,000,000 Mar.090200051766Nguyen Van A 4,000,000 Apr.090200051767Nguyen Thi B 4,000,000 Apr.090200051768Nguyen Van C 4,000,000 Apr.090200051769Nguyen Anh D 4,000,000 Apr.090200051766Nguyen Van A 4,000,000 May.090200051767Nguyen Thi B 4,000,000 May.090200051768Nguyen Van C 4,000,000 May.090200051769Nguyen Anh D 4,000,000 May.090200051766Nguyen Van A 5,000,000 Jun.09

Kết quả mong muốn:Số sổ BHXH0200051766TênNguyen Van ATừ thángĐến thángSố thángMức lươngSố tiền đóng BHXHJan.09Feb.092 3,000,000 600,000 Mar.09May.093 4,000,000 800,000 Jun.09Jun.091 5,000,000 1,000,000 Và cứ như vậy, khi mức lương thay đổi thì tự động xuống dòng, hiển thị từ tháng đến tháng, số tháng, mức lương thang đổi.
 

File đính kèm

Bạn nào làm ơn gỏi thêm 1 file E2K3 với

Xin cảm ơn nhiều nha!
 
Bạn dùng macro này & cho ý kiến sau đó nha

Xem thêm trong file đính kèm:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [h2]) Is Nothing Then
   Dim Rng As Range, Clls As Range
   Dim eRw As Long
   Dim MLuong As Double
   
   Range("N4:Q4").Value = Range("A4:D4").Value
   eRw = [A65500].End(xlUp).Row
   Set Rng = Range("A4:D" & eRw)
   Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
      "H1:H2"), CopyToRange:=Range("N4:Q4"), Unique:=False
   Range("G4").FormulaR1C1 = "=DenThang":       [h4] = [Q4]
   Range("J4").FormulaR1C1 = "=SoTien":         [i4] = [P4]
   Range("F5:k" & eRw).Clear
   Range("F5:G" & eRw).NumberFormat = "[$-409]mmm-yy;@"
   
   For Each Clls In Range([p5], [p5].End(xlDown))
      With Clls
         If .Row = 5 Then
            MLuong = .Value:        [f5] = [q5]
            [i5] = MLuong:          [j5] = 0.2 * MLuong
         Else
            If .Value <> MLuong Then
               Set Rng = [f65500].End(xlUp)
               
               Rng.Offset(, 1).Value = .Offset(-1, 1).Value
               
               Rng.Offset(, 2) = 1 + Month(Rng.Offset(, 1)) - Month(Rng)
               MLuong = .Value:     Rng.Offset(1, 3) = MLuong
               Rng.Offset(1).Value = .Offset(, 1)
               Rng.Offset(1, 4) = 0.2 * MLuong
            End If
         End If
         If .Row = [P65500].End(xlUp).Row Then
            Rng.Offset(1, 1).Value = .Offset(, 1)
            Rng.Offset(1, 2).Value = 1 + Month(Rng.Offset(1, 1)) - Month(.Offset(, 1))
         End If
      End With
   Next Clls
   Range("N4:R" & eRw).Clear
 End If 
End Sub
 

File đính kèm

Cảm ơn bạn HYen17 rất nhiều!

Bạn đã hiểu ý của mình. Tuy nhiên, khi mình chọn số sổ BHXH khác thì sai số tháng cho từng mức lương thay đổi. Nhờ bạn kiểm tra lại giúp mình nha.
 

File đính kèm

Nó đây rồi bạn ơi!

Cảm ơn bạn HYen17 rất nhiều!
Bạn đã hiểu ý của mình. Tuy nhiên, khi mình chọn số sổ BHXH khác thì sai số tháng cho từng mức lương thay đổi. Nhờ bạn kiểm tra lại giúp mình nha.

Bạn sửa lại câu lệnh

Mã:
           [COLOR=#0000bb]Rng[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]2[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000bb]Value [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]1 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000bb]Month[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]Rng[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700])) - [/COLOR][COLOR=#0000bb]Month[/COLOR][COLOR=#007700](.[/COLOR][COLOR=#0000bb]Offset[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]))[/COLOR]

bằng câu sau:
PHP:
            Rng.Offset(1, 2).Value = 1 - Month(Rng.Offset(1)) + Month(.Offset(, 1))
 
Nhờ các Pác cao thủ ra tay giúp mình.

Sau khi mình test, các trường hợp sau vẫn chưa đúng, và báo lỗi. Nhờ các Pác chỉnh lại giúp mình nhé!

- Sai số tháng khi một nhân viên có một mức lương đóng BHXH từ năm này đến năm khác. Ví dụ, lương Nguyễn Văn A, từ 01/2008-05/2009 là 3tr, số tháng đúng: 15 tháng.
- Có tháng Nguyên Văn A không có record lương do không đóng BHXH, v.v...

Xin đa tạ các Pác!
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom