Nhờ sửa Code file "Chamcong_luong" (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tommybull

Thành viên hoạt động
Tham gia
21/7/08
Bài viết
191
Được thích
29
Giới tính
Nam
Kính chào các anh chị trên GPE, lần trước đã nhờ các anh chị làm giúp File "Chamcong_luong"
Sau khi thực hiện, em gặp một số vấn đề và cần chỉnh sửa lại cho phù hợp, Kính mong anh chị giúp đỡ
File em gửi đính kèm, cần chỉnh sửa lại như sau ạ:

1. Tại Sheet "Chamcong" , Sửa lại code Update_list sao cho danh sách nhân viên chuyển từ Sheet "Danhsach_NV" vào Sheet "Chamcong", trừ những người em đã đánh ngày thôi việc tại cột "V" của Sheet "Danhsach-NV", đồng thời tự động đánh dấu "X" vào các ô từ "F đến AJ" trừ những ngày chủ nhật là không đánh dấu "X"
*** Code chấm công hiện tại đang dùng, mỗi đơn vị số tương ứng với 0.5 giờ, ví dụ "P3" nghỉ phép năm 1,5 tiếng,
Em muốn chỉnh lại theo số thực tế: Ví dự: P4: Nghỉ phép năm 4 tiếng, V4.5: Nghỉ việc riêng 4,5 tiếng

2. Các cột "Vắng mặt" (các loại phép) và các cột ghi các loại tăng ca (Từ AK đến AY) em có ghi chú ví dụ cho minh họa cho nhân viên HA1709004, anh chị sửa lại Code giúp ạ

3. Phần Code "Kết xuất" bảng chấm công sau khi kết xuất thì Ô AI4 không kết xuất được, anh chị chỉnh sửa giúp ạ

4. Do Sheet Payroll_luong, phải chi dòng để phân biệt chi phí quản lý và chi phí nhân công trực tiếp cho bộ phận kế toán theo dõi, nên khi chạy lệnh "Update_List" bị báo lỗi, anh chị sửa lại giúp ạ!
 

File đính kèm

Macro: Update_List() đang bọ báo lỗi dòng lệnh này:
.Range(.[A7], .[A65535].End(xlUp)).EntireRow.Clear
Lí do là bạn xóa những dòng mà trong đó có trộn cột.
Ta chỉ nên xóa trong fạm vi từ cột AJ trở về trước mà thôi;

Theo mình, bạn nên chia nhỏ các công đoạn chép & cập nhật dữ liệu ra từng macro, ví du:
C1: Chép 5 cột sữ liệu của người lao động (chưa nghỉ việc) từ trang 'DSNV' sang (tên trang tính của bạn quá dài & không cần thiết dài như vậy)
C2: Gán công mặt định
C3: . . . . .

Tạm thời là vậy, còn nhiều chuyện lắm!
 
Upvote 0
Cảm ơn anh "Hoang2013" nhưng em "Gà" về Code lắm, theo nhu cầu công việc bên em là như vậy, mong giúp đỡ thêm ạk!
Nhân đây em cũng rất mong các anh chị khác vui lòng ghé qua và ra tay giúp đỡ ạk!
Chân thành cảm ơn
 
Upvote 0
Kính chào các anh chị trên GPE, lần trước đã nhờ các anh chị làm giúp File "Chamcong_luong"
Sau khi thực hiện, em gặp một số vấn đề và cần chỉnh sửa lại cho phù hợp, Kính mong anh chị giúp đỡ
File em gửi đính kèm, cần chỉnh sửa lại như sau ạ:

1. Tại Sheet "Chamcong" , Sửa lại code Update_list sao cho danh sách nhân viên chuyển từ Sheet "Danhsach_NV" vào Sheet "Chamcong", trừ những người em đã đánh ngày thôi việc tại cột "V" của Sheet "Danhsach-NV", đồng thời tự động đánh dấu "X" vào các ô từ "F đến AJ" trừ những ngày chủ nhật là không đánh dấu "X"
*** Code chấm công hiện tại đang dùng, mỗi đơn vị số tương ứng với 0.5 giờ, ví dụ "P3" nghỉ phép năm 1,5 tiếng,
Em muốn chỉnh lại theo số thực tế: Ví dự: P4: Nghỉ phép năm 4 tiếng, V4.5: Nghỉ việc riêng 4,5 tiếng

2. Các cột "Vắng mặt" (các loại phép) và các cột ghi các loại tăng ca (Từ AK đến AY) em có ghi chú ví dụ cho minh họa cho nhân viên HA1709004, anh chị sửa lại Code giúp ạ

3. Phần Code "Kết xuất" bảng chấm công sau khi kết xuất thì Ô AI4 không kết xuất được, anh chị chỉnh sửa giúp ạ

4. Do Sheet Payroll_luong, phải chi dòng để phân biệt chi phí quản lý và chi phí nhân công trực tiếp cho bộ phận kế toán theo dõi, nên khi chạy lệnh "Update_List" bị báo lỗi, anh chị sửa lại giúp ạ!
Bác "ndu96081631" ; "HieuCD" "HYen17" và các anh chị vui lòng ra tay nghĩa hiệp giúp em với ạ!
Trân trọng!
 
Upvote 0
Kính chào các anh chị trên GPE, lần trước đã nhờ các anh chị làm giúp File "Chamcong_luong"
Sau khi thực hiện, em gặp một số vấn đề và cần chỉnh sửa lại cho phù hợp, Kính mong anh chị giúp đỡ
File em gửi đính kèm, cần chỉnh sửa lại như sau ạ:

1. Tại Sheet "Chamcong" , Sửa lại code Update_list sao cho danh sách nhân viên chuyển từ Sheet "Danhsach_NV" vào Sheet "Chamcong", trừ những người em đã đánh ngày thôi việc tại cột "V" của Sheet "Danhsach-NV", đồng thời tự động đánh dấu "X" vào các ô từ "F đến AJ" trừ những ngày chủ nhật là không đánh dấu "X"
*** Code chấm công hiện tại đang dùng, mỗi đơn vị số tương ứng với 0.5 giờ, ví dụ "P3" nghỉ phép năm 1,5 tiếng,
Em muốn chỉnh lại theo số thực tế: Ví dự: P4: Nghỉ phép năm 4 tiếng, V4.5: Nghỉ việc riêng 4,5 tiếng

2. Các cột "Vắng mặt" (các loại phép) và các cột ghi các loại tăng ca (Từ AK đến AY) em có ghi chú ví dụ cho minh họa cho nhân viên HA1709004, anh chị sửa lại Code giúp ạ

3. Phần Code "Kết xuất" bảng chấm công sau khi kết xuất thì Ô AI4 không kết xuất được, anh chị chỉnh sửa giúp ạ

4. Do Sheet Payroll_luong, phải chi dòng để phân biệt chi phí quản lý và chi phí nhân công trực tiếp cho bộ phận kế toán theo dõi, nên khi chạy lệnh "Update_List" bị báo lỗi, anh chị sửa lại giúp ạ!
CÁC ANH CHỊ GIÚP VỚI Ạ!
ĐANG RẤT MONG NHẬN ĐƯỢC SỰ GIÚP ĐỠ CỦA MỌI NGƯỜI Ạ!
 
Upvote 0
Code của ai viết thì chỉ có người đó mới có khả năng sửa. Những người biết viết code thì ít khi nào muốn đọc code của người khác

Bạn nên tìm chủ nhân của file này để tìm sự trợ giúp
 
Upvote 0
Code của ai viết thì chỉ có người đó mới có khả năng sửa. Những người biết viết code thì ít khi nào muốn đọc code của người khác

Bạn nên tìm chủ nhân của file này để tìm sự trợ giúp
Dạ đúng như vậy ạ, Bác "HYen17" ạ, nhưng hình như "HYen17 bận hay sao í, mãi không thấy đâu cả.
Vẫn đang chờ mãi ạ!
 
Upvote 0
Kính chào các anh chị trên GPE, lần trước đã nhờ các anh chị làm giúp File "Chamcong_luong"
Sau khi thực hiện, em gặp một số vấn đề và cần chỉnh sửa lại cho phù hợp, Kính mong anh chị giúp đỡ
File em gửi đính kèm, cần chỉnh sửa lại như sau ạ:

1. Tại Sheet "Chamcong" , Sửa lại code Update_list sao cho danh sách nhân viên chuyển từ Sheet "Danhsach_NV" vào Sheet "Chamcong", trừ những người em đã đánh ngày thôi việc tại cột "V" của Sheet "Danhsach-NV", đồng thời tự động đánh dấu "X" vào các ô từ "F đến AJ" trừ những ngày chủ nhật là không đánh dấu "X"
*** Code chấm công hiện tại đang dùng, mỗi đơn vị số tương ứng với 0.5 giờ, ví dụ "P3" nghỉ phép năm 1,5 tiếng,
Em muốn chỉnh lại theo số thực tế: Ví dự: P4: Nghỉ phép năm 4 tiếng, V4.5: Nghỉ việc riêng 4,5 tiếng

2. Các cột "Vắng mặt" (các loại phép) và các cột ghi các loại tăng ca (Từ AK đến AY) em có ghi chú ví dụ cho minh họa cho nhân viên HA1709004, anh chị sửa lại Code giúp ạ

3. Phần Code "Kết xuất" bảng chấm công sau khi kết xuất thì Ô AI4 không kết xuất được, anh chị chỉnh sửa giúp ạ

4. Do Sheet Payroll_luong, phải chi dòng để phân biệt chi phí quản lý và chi phí nhân công trực tiếp cho bộ phận kế toán theo dõi, nên khi chạy lệnh "Update_List" bị báo lỗi, anh chị sửa lại giúp ạ!
Các anh, các chị ơi!
Vui lòng giúp em với ạ!
 
Upvote 0
Đã nói là chờ chủ nhân của Code rồi mà lị :D:D:D
Dạ. Em code không phải của một người. Em xin của nhiều anh chị trên diễn đàn. Nên giờ chỉ biết lên diễn đàn nhờ giúp. Nên anh chị bớt chút thời gian quý báu. Mỗi người làm giúp một phần là sẽ hoàn thiện thôi ạ.
Trân trọng
 
Upvote 0
Code bị lỗi quá trời luôn, giống như bạn cắt file này nối vào file khác.
 
Upvote 0
Dạ. Em chờ được mà. Anh chị giúp dùm nhé
Cảm ơn ạk
 
Upvote 0
Nói thế này chắc bạn chủ bài đăng sẽ buồn, nhưng vẫn fải nói; Đó là cần quay lại từ đầu.

Nhưng đừng thất vọng do bạn & mọi người có hướng đi & suông sẻ hơn.
 
Upvote 0
Dạ. Em chờ được mà. Anh chị giúp dùm nhé
Cảm ơn ạk
Lúc trước mình cũng giống bạn, cũng lấy code người khác xong, rồi sửa lại. nhưng sau đó lại xảy ra vấn đề là code đó chỉ chạy chưa dc 100% yêu cầu của mình, nhưng nếu sửa lại thì code lại chạy sai, và nhiều yếu tố nữa.
Sau đó thì mình cũng mày mò, tự học rồi cũng tự viết những cái đơn giản bản đầu, dần dần thì viết được phần mềm. Mục tiêu là giúp công việc suông sẻ hơn thôi.
Nếu bạn tự học được thì bạn tự học, tìm hiểu trên các forum, không thì bạn đăng ký các khóa học VBA online, offline. Hiện nay mình thấy trên mạng hơi bị nhiều.
Vài lời chân thành chia sẻ với bạn.
 
Upvote 0
Nói thế này chắc bạn chủ bài đăng sẽ buồn, nhưng vẫn fải nói; Đó là cần quay lại từ đầu.

Nhưng đừng thất vọng do bạn & mọi người có hướng đi & suông sẻ hơn.
Em chưa hiểu "Quay lại từ đầu" là sao ạ,
Vấn đề là em đang cần sự giúp đỡ, như các bác nói vậy, nghe có vẻ em hết hi vọng rồi, híc...
 
Upvote 0
Có nghĩa là bắt đầu từ khâu thiết kế các trang tính chủ iếu & những bảng biểu cần thiết trong trang fụ trợ

Lấy ví dụ Người ta không nhập tên của bộ fận mà người nào đó thuộc về; Mà nhập mã của tên đôn vị đó
Chẳng hạn Tên đơn vị là 'Phòng Kế hoạch-VT', ta chỉ cần nhập kí tự E (trong bảng danh mục thì E ứng với tên fòng này.)
. . . . .
Bạn nên sớm quay lại ngay từ bây giờ; Chứ sau nữa thì còn tiếc nuốt nhiều hơn!
 
Upvote 0
Kính chào các anh chị trên GPE, lần trước đã nhờ các anh chị làm giúp File "Chamcong_luong"
Sau khi thực hiện, em gặp một số vấn đề và cần chỉnh sửa lại cho phù hợp, Kính mong anh chị giúp đỡ
File em gửi đính kèm, cần chỉnh sửa lại như sau ạ:

1. Tại Sheet "Chamcong" , Sửa lại code Update_list sao cho danh sách nhân viên chuyển từ Sheet "Danhsach_NV" vào Sheet "Chamcong", trừ những người em đã đánh ngày thôi việc tại cột "V" của Sheet "Danhsach-NV", đồng thời tự động đánh dấu "X" vào các ô từ "F đến AJ" trừ những ngày chủ nhật là không đánh dấu "X"
*** Code chấm công hiện tại đang dùng, mỗi đơn vị số tương ứng với 0.5 giờ, ví dụ "P3" nghỉ phép năm 1,5 tiếng,
Em muốn chỉnh lại theo số thực tế: Ví dự: P4: Nghỉ phép năm 4 tiếng, V4.5: Nghỉ việc riêng 4,5 tiếng

2. Các cột "Vắng mặt" (các loại phép) và các cột ghi các loại tăng ca (Từ AK đến AY) em có ghi chú ví dụ cho minh họa cho nhân viên HA1709004, anh chị sửa lại Code giúp ạ

3. Phần Code "Kết xuất" bảng chấm công sau khi kết xuất thì Ô AI4 không kết xuất được, anh chị chỉnh sửa giúp ạ

4. Do Sheet Payroll_luong, phải chi dòng để phân biệt chi phí quản lý và chi phí nhân công trực tiếp cho bộ phận kế toán theo dõi, nên khi chạy lệnh "Update_List" bị báo lỗi, anh chị sửa lại giúp ạ!
Tạo trước cho bạn 2 code cập nhật danh sách và tính công
Khi cần thì bấm chạy cập nhật danh sách
Sau khi chấm công đầy đủ bấm lệnh tính công
 

File đính kèm

Upvote 0
Tạo trước cho bạn 2 code cập nhật danh sách và tính công
Khi cần thì bấm chạy cập nhật danh sách
Sau khi chấm công đầy đủ bấm lệnh tính công
Dạ, Cảm ơn anh "HieuCD", em down về và áp dụng, nếu có vấn đề gì nữa mong tiếp tục nhận được sự giúp đỡ từ anh nhé, ngòai ra, còn một số hạng mục như nêu trên, cũng mong anh giúp ạ
Chúc anh đầu tuần vui vẻ và thành công
Chúc tất cả những vị giáo viên (Nhất là những vị trong diễn đàn này) , ngày 20-11 tràn đầy niềm vui và hạnh phúc, sức khỏe và thành công ạ!
Trân trọng!
 
Upvote 0
Dạ, Cảm ơn anh "HieuCD", em down về và áp dụng, nếu có vấn đề gì nữa mong tiếp tục nhận được sự giúp đỡ từ anh nhé, ngòai ra, còn một số hạng mục như nêu trên, cũng mong anh giúp ạ
Chúc anh đầu tuần vui vẻ và thành công
Chúc tất cả những vị giáo viên (Nhất là những vị trong diễn đàn này) , ngày 20-11 tràn đầy niềm vui và hạnh phúc, sức khỏe và thành công ạ!
Trân trọng!
Anh "HieuCD" ơi, Em cho chạy thử File rồi, nhưng cột "KR" em đánh nghỉ không phép "K" (nghỉ không phép 8 tiếng) hoặc ví dụ "K4"(nghỉ không phép 4 tiếng) thì lệnh không thể hiện số giờ tại cột "KR"
Ngoài ra, cột "AZ" (Ngày phép phép còn lại), em thử thêm một nhân viên mới vào và cho Update List thì cũng không chạy được ạ
Anh xem giúp em nhé
Tks anh!

TB: Anh có thể cho em số điện thoại hay Email để tiện liên lạc không ạ?
 
Upvote 0
Dạ, Cảm ơn anh "HieuCD", em down về và áp dụng, nếu có vấn đề gì nữa mong tiếp tục nhận được sự giúp đỡ từ anh nhé, ngòai ra, còn một số hạng mục như nêu trên, cũng mong anh giúp ạ
Chúc anh đầu tuần vui vẻ và thành công
Chúc tất cả những vị giáo viên (Nhất là những vị trong diễn đàn này) , ngày 20-11 tràn đầy niềm vui và hạnh phúc, sức khỏe và thành công ạ!
Trân trọng!
Chỉnh lại code, thêm sheet Payroll_Luong
Còn các phần khác không hiểu ý bạn như thế nào
Mã:
Sub Update_List()
    Dim sArr, dArr, cArr, VP, SX, dkVP As String
    Dim I As Long, J As Long, stt As Long, K As Long, Thu As Long, k1 As Long, k2 As Long
    Application.ScreenUpdating = False
    With Sheets("Danhsach_NV")
        sArr = .Range("A7", .Range("A65535").End(3)).Resize(, 34).Value
    End With
    With Sheets("Chamcong")
      cArr = .Range("C7:C12").Value
    End With
    ReDim dArr(1 To UBound(sArr) * 7, 1 To 36)
    dkVP = Sheets("Payroll_Luong").Range("BN1").Value
    ReDim VP(1 To UBound(sArr), 1 To 3)
    ReDim SX(1 To UBound(sArr), 1 To 3)
    For I = 1 To UBound(sArr)
        If sArr(I, 2) <> Empty And sArr(I, 22) = Empty Then
            K = K + 1
            stt = stt + 1
            dArr(K, 1) = stt
            For J = 2 To 4
                dArr(K, J) = sArr(I, J)
            Next J
            dArr(K, 5) = sArr(I, 9)
            For J = 6 To 36
                Thu = Application.Weekday(Sheets("ChamCong").Cells(5, J), 2)
                If Thu <> 7 Then dArr(K, J) = "X"
            Next J
            For J = 1 To 6
                K = K + 1
                dArr(K, 3) = cArr(J, 1)
            Next J
            If sArr(I, 7) = dkVP Then
              k1 = k1 + 1
              VP(k1, 1) = k1
              VP(k1, 2) = sArr(I, 2)
              VP(k1, 3) = sArr(I, 3)
            Else
              k2 = k2 + 1
              SX(k2, 2) = sArr(I, 2)
              SX(k2, 3) = sArr(I, 3)
            End If
        End If
    Next I
    For I = 1 To k2
      SX(I, 1) = I + k1
    Next I
    With Sheets("Chamcong")
        I = .Range("C65535").End(xlUp).Row
        If I > 12 Then
          I = Int((I - 6) / 7 + 1) * 7 + 5
          .Range("A13:BA" & I).Clear
          .Range("A6:BA12").ClearContents
        End If
        .Range("A6").Resize(K, 36) = dArr
        .Range("A6:BA12").Copy
        .Range("A13").Resize(K - 7, 53).PasteSpecial Paste:=xlPasteFormats
        Application.CutCopyMode = False
        For I = 1 To UBound(dArr) Step 7
          .Range("AS" & I + 5).FormulaR1C1 = "=COUNTIF(RC[-39]:RC[-9],""X*"")*8-SUM(RC[-6]:RC[-1])"
          .Range("AZ" & I + 5).FormulaR1C1 = "=VLOOKUP(RC[-50],Phepnam!R7C2:R54C46,34,0)"
        Next I
    End With
   
    With Sheets("Payroll_Luong")
        K = .Range("B65535").End(xlUp).Row
        For I = 12 To 65500
          If InStr(.Cells(I, 1), "II") Then
            If K > k2 + I Then
              .Range("A" & I + 2).Resize(K - k2 - I).EntireRow.Delete
            ElseIf K < k2 + I Then
              .Range("A" & I + 2).Resize(k2 + I - K).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
              .Range("N" & I + 1).Resize(, 39).Copy
              .Range("N" & I + 1).Resize(k2 - 1, 39).PasteSpecial Paste:=xlPasteFormulas
              Application.CutCopyMode = False
            End If
            .Range("A" & I + 1).Resize(k2, 3) = SX
           
            If I > k1 + 12 + 1 Then
              .Range("A13").Resize(I - (k1 + 12 + 1)).EntireRow.Delete
            ElseIf I < k1 + 12 + 1 Then
              .Range("A13").Resize(k1 + 12 + 1 - I).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
              .Range("N12").Resize(, 39).Copy
              .Range("N13").Resize(k1 - 1, 39).PasteSpecial Paste:=xlPasteFormulas
              Application.CutCopyMode = False
            End If
            .Range("A12").Resize(k1, 3) = VP
          End If
        Next I
    End With
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Chỉnh lại code, thêm sheet Payroll_Luong
Còn các phần khác không hiểu ý bạn như thế nào
Mã:
Sub Update_List()
    Dim sArr, dArr, cArr, VP, SX, dkVP As String
    Dim I As Long, J As Long, stt As Long, K As Long, Thu As Long, k1 As Long, k2 As Long
    Application.ScreenUpdating = False
    With Sheets("Danhsach_NV")
        sArr = .Range("A7", .Range("A65535").End(3)).Resize(, 34).Value
    End With
    With Sheets("Chamcong")
      cArr = .Range("C7:C12").Value
    End With
    ReDim dArr(1 To UBound(sArr) * 7, 1 To 36)
    dkVP = Sheets("Payroll_Luong").Range("BN1").Value
    ReDim VP(1 To UBound(sArr), 1 To 3)
    ReDim SX(1 To UBound(sArr), 1 To 3)
    For I = 1 To UBound(sArr)
        If sArr(I, 2) <> Empty And sArr(I, 22) = Empty Then
            K = K + 1
            stt = stt + 1
            dArr(K, 1) = stt
            For J = 2 To 4
                dArr(K, J) = sArr(I, J)
            Next J
            dArr(K, 5) = sArr(I, 9)
            For J = 6 To 36
                Thu = Application.Weekday(Sheets("ChamCong").Cells(5, J), 2)
                If Thu <> 7 Then dArr(K, J) = "X"
            Next J
            For J = 1 To 6
                K = K + 1
                dArr(K, 3) = cArr(J, 1)
            Next J
            If sArr(I, 7) = dkVP Then
              k1 = k1 + 1
              VP(k1, 1) = k1
              VP(k1, 2) = sArr(I, 2)
              VP(k1, 3) = sArr(I, 3)
            Else
              k2 = k2 + 1
              SX(k2, 2) = sArr(I, 2)
              SX(k2, 3) = sArr(I, 3)
            End If
        End If
    Next I
    For I = 1 To k2
      SX(I, 1) = I + k1
    Next I
    With Sheets("Chamcong")
        I = .Range("C65535").End(xlUp).Row
        If I > 12 Then
          I = Int((I - 6) / 7 + 1) * 7 + 5
          .Range("A13:BA" & I).Clear
          .Range("A6:BA12").ClearContents
        End If
        .Range("A6").Resize(K, 36) = dArr
        .Range("A6:BA12").Copy
        .Range("A13").Resize(K - 7, 53).PasteSpecial Paste:=xlPasteFormats
        Application.CutCopyMode = False
        For I = 1 To UBound(dArr) Step 7
          .Range("AS" & I + 5).FormulaR1C1 = "=COUNTIF(RC[-39]:RC[-9],""X*"")*8-SUM(RC[-6]:RC[-1])"
          .Range("AZ" & I + 5).FormulaR1C1 = "=VLOOKUP(RC[-50],Phepnam!R7C2:R54C46,34,0)"
        Next I
    End With
  
    With Sheets("Payroll_Luong")
        K = .Range("B65535").End(xlUp).Row
        For I = 12 To 65500
          If InStr(.Cells(I, 1), "II") Then
            If K > k2 + I Then
              .Range("A" & I + 2).Resize(K - k2 - I).EntireRow.Delete
            ElseIf K < k2 + I Then
              .Range("A" & I + 2).Resize(k2 + I - K).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
              .Range("N" & I + 1).Resize(, 39).Copy
              .Range("N" & I + 1).Resize(k2 - 1, 39).PasteSpecial Paste:=xlPasteFormulas
              Application.CutCopyMode = False
            End If
            .Range("A" & I + 1).Resize(k2, 3) = SX
          
            If I > k1 + 12 + 1 Then
              .Range("A13").Resize(I - (k1 + 12 + 1)).EntireRow.Delete
            ElseIf I < k1 + 12 + 1 Then
              .Range("A13").Resize(k1 + 12 + 1 - I).EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
              .Range("N12").Resize(, 39).Copy
              .Range("N13").Resize(k1 - 1, 39).PasteSpecial Paste:=xlPasteFormulas
              Application.CutCopyMode = False
            End If
            .Range("A12").Resize(k1, 3) = VP
          End If
        Next I
    End With
    Application.ScreenUpdating = True
End Sub
Em Coppy vào thì báo lỗi ở đoạn này ạ!: ".Range("A12").Resize(k1, 3) = VP"
 
Upvote 0

File đính kèm

Upvote 0
Do dkVP lấy giá trị từ ô BN1, mình quên dặn bạn nhập điều kiện, chỉnh lại code bỏ biến dkVP
Bạn cần gì cứ nhắn tin trên diễn đàn
Chào anh, em down về và chạy thử thì phát hiện còn vài vấn đề ở "sheet Chamcong", em có ghi chú trong sheet luôn rồi ạ!
Anh xem giúp em với nhé
Cảm ơn anh!
Trân trọng!
 

File đính kèm

Upvote 0
Chào anh, em down về và chạy thử thì phát hiện còn vài vấn đề ở "sheet Chamcong", em có ghi chú trong sheet luôn rồi ạ!
Anh xem giúp em với nhé
Cảm ơn anh!
Trân trọng!
Code viết theo vị trí dòng cột qui định trước, bạn không thể tự insert thêm dòng 6 được, toàn bộ 2 code đều phá sản không chạy được, dòng 6 bạn thêm vào là gì vậy?
 
Upvote 0
Code viết theo vị trí dòng cột qui định trước, bạn không thể tự insert thêm dòng 6 được, toàn bộ 2 code đều phá sản không chạy được, dòng 6 bạn thêm vào là gì vậy?
Dạ em biết khi thêm dòng vào thì lại phải chỉnh lại Code, ý của em là muốn đặt riêng "ký hiệu những loại phép" dành riêng cho ngày làm ca đêm, em không biết là có cần thiết không, nên có hỏi là "Có cần thiết không ạ?" trong phần chú thích trong Sheet chamcong đó ạ!
 
Upvote 0
Dạ em biết khi thêm dòng vào thì lại phải chỉnh lại Code, ý của em là muốn đặt riêng "ký hiệu những loại phép" dành riêng cho ngày làm ca đêm, em không biết là có cần thiết không, nên có hỏi là "Có cần thiết không ạ?" trong phần chú thích trong Sheet chamcong đó ạ!
Mình tính dựa vào dòng 5, thêm cột làm đêm "D" không có vấn đề gì, vấn đề là mấy ký tự ở dòng 6 là gì? có cần không?
 
Upvote 0
Mình tính dựa vào dòng 5, thêm cột làm đêm "D" không có vấn đề gì, vấn đề là mấy ký tự ở dòng 6 là gì? có cần không?
Dạ, ý em là khi mình chấm "D" vào trong khoảng từ "F:AJ" , và trong ngày nào đó, bạn nào đó nghỉ phép vào ngày đi ca đêm, mà dùng ký hiệu tại dòng 5 thì em sợ bị trừ nhầm lẫn giữa phép của ca ngày và phép của ca đêm, như vậy giờ công sẽ không chính xác ạ! (Đó là em nghĩ vậy, nên em cũng muốn xin ý kiến khai sáng của anh ạ!) .
 
Upvote 0
Dạ, ý em là khi mình chấm "D" vào trong khoảng từ "F:AJ" , và trong ngày nào đó, bạn nào đó nghỉ phép vào ngày đi ca đêm, mà dùng ký hiệu tại dòng 5 thì em sợ bị trừ nhầm lẫn giữa phép của ca ngày và phép của ca đêm, như vậy giờ công sẽ không chính xác ạ! (Đó là em nghĩ vậy, nên em cũng muốn xin ý kiến khai sáng của anh ạ!) .
Vậy thay gì đánh "X" bạn đánh "D" là biết công ngày hay đêm là được rồi
 
Upvote 0
dạ vâng, nhưng "D" là ngày công đêm, nhưng trong những ngày làm công đêm, có thể có bạn nghỉ phép, thì mình dùng chung ký hiệu nghỉ phép tại dòng 5, như vậy giờ công có bị trừ nhầm qua lại giữa 2 loại công không ạ?
 
Upvote 0
dạ vâng, nhưng "D" là ngày công đêm, nhưng trong những ngày làm công đêm, có thể có bạn nghỉ phép, thì mình dùng chung ký hiệu nghỉ phép tại dòng 5, như vậy giờ công có bị trừ nhầm qua lại giữa 2 loại công không ạ?
Nếu là "D" thì trừ đêm "X" thì trừ ngày, thì làm sao nhằm được
 
Upvote 0
Anh "HieuCD" giúp tiếp em với ạk!
Cảm ơn anh
 
Upvote 0
Đã chỉnh code tính công, bạn kiểm tra lại
Chào anh, em mới kiểm tra xong, những điều kiện trong File chạy gần như đúng ý em, nhưng còn một vấn đề ạ!
Phần tăng ca, nếu ô đi làm mà không tích dấu (X hoặc D) thì phía dưới có chấm tăng ca công thức sẽ không chạy, như vậy không sao (và cũng rất hợp lý, vì không đi làm thì sao mà tăng ca), nhưng...
- Nếu vào ngày chủ nhật mà có người nào đó tăng ca, em sẽ chấm công vào hàng "Tăng ca ngày chủ nhật 200%" ( Ví dụ: tại Ô "V9" , đồng thời phải tích (X hoặc D) vào dòng đi làm (Ví dụ Ô "V6", như vậy công thức sẽ tự động tính giờ làm vào Ô "AW6", đồng thời lại tính dư ra một ngày làm ví dụ tại "AS6", như thế qua sheet Payroll_luong , số ngày làm bị tăng lên so với thực tế.
-Nếu em không tích (X hoặc D) vào dòng đi làm (Ví dụ tại "AC6") Thì giờ công tăng ca sẽ không được hiển thị tại "AW6"
- Tương tự các dòng tăng ca phía dưới cũng bị hiện tượng này ạ!
Mong anh giúp đỡ
Trân trọng!
 

File đính kèm

Upvote 0
Chào anh, em mới kiểm tra xong, những điều kiện trong File chạy gần như đúng ý em, nhưng còn một vấn đề ạ!
Phần tăng ca, nếu ô đi làm mà không tích dấu (X hoặc D) thì phía dưới có chấm tăng ca công thức sẽ không chạy, như vậy không sao (và cũng rất hợp lý, vì không đi làm thì sao mà tăng ca), nhưng...
- Nếu vào ngày chủ nhật mà có người nào đó tăng ca, em sẽ chấm công vào hàng "Tăng ca ngày chủ nhật 200%" ( Ví dụ: tại Ô "V9" , đồng thời phải tích (X hoặc D) vào dòng đi làm (Ví dụ Ô "V6", như vậy công thức sẽ tự động tính giờ làm vào Ô "AW6", đồng thời lại tính dư ra một ngày làm ví dụ tại "AS6", như thế qua sheet Payroll_luong , số ngày làm bị tăng lên so với thực tế.
-Nếu em không tích (X hoặc D) vào dòng đi làm (Ví dụ tại "AC6") Thì giờ công tăng ca sẽ không được hiển thị tại "AW6"
- Tương tự các dòng tăng ca phía dưới cũng bị hiện tượng này ạ!
Mong anh giúp đỡ
Trân trọng!
Bạn kiểm tra file
 

File đính kèm

Upvote 0
Chào anh, Chúc anh một ngày mới bình an,
Em đã kiểm tra file anh làm giúp em rồi (Sheet chamcong), hoàn toàn như ý ạk!
Trong quá trình sử dụng, nếu có vấn đề gì nữa, mong lại tiếp tục nhận được sự giúp đỡ của anh
Vấn đề em đang lăn tăn là: Không biết phải cảm ơn anh bằng cách nào ạk!
Trân trọng!
 
Upvote 0
Chào anh, sáng giờ em down File về thực hiện chấm công, nhưng lại không để ý Sheet "Payroll_Luong" giờ em phát hiện vấn đề sau:
Anh cho chạy lệnh "UpdateList" thì Mã số NV và Họ tên NV sẽ tự động chạy vào Sheet "Payroll_Luong" (Em không biết chạy từ Sheet nào qua) nhưng vấn đề ở đây là: Nó mặc định những nhân viên cụ thể (HA1709004; 006; 008; 009) chạy vào Vùng lương bộ phận quản lý và chỉ có 4 người này, em muốn thêm một dòng nữa thì cũng không được, còn lại thì chạy vào vùng lương bộ phận sản xuất
Anh giúp em như sau ạk:
- Bên Sheet "Danhsach-NV" mình thêm một cột phụ và đặt mã hiệu cho từng người - Ví dụ: Những người có mã hiệu là QL thì chạy vào vùng lương của bộ phận quản lý, Những người có mã hiệu SX, thì chạy vào vùng lương của bộ phận sản xuất, không giới hạn số người (Vì số người là không cố định được ạk)
- Tương tự như thế, anh có thể đặt quy tắc giúp em, ví dụ sau này công ty thêm nhiều người, tách ra thành nhiều bộ phận (Ví dụ như: Tiện, Phay, Mài, Đóng gói...) thì em chỉ đặt mã tương ứng thì nó sẽ tự phân vùng cho em luôn (giống như phần tự nhận biết ký hiệu bên Sheet "Chamcong" vậy ạ, em chỉ tưởng tượng ra như thế),
- Sheet "Payroll_luong" chỉ cần chạy "Số thứ tự, Mã NV, Họ tên nhân viên và phân vùng, còn lại những Cell kế tiếp sau đó thì em cho chạy công thức ạ)
Trên đây là vài vấn đề em còn đang gặp phải, mong sớm nhận được sự quan tâm giúp đỡ của anh ạ!
Trân trọng!
 
Upvote 0
Chào anh, sáng giờ em down File về thực hiện chấm công, nhưng lại không để ý Sheet "Payroll_Luong" giờ em phát hiện vấn đề sau:
Anh cho chạy lệnh "UpdateList" thì Mã số NV và Họ tên NV sẽ tự động chạy vào Sheet "Payroll_Luong" (Em không biết chạy từ Sheet nào qua) nhưng vấn đề ở đây là: Nó mặc định những nhân viên cụ thể (HA1709004; 006; 008; 009) chạy vào Vùng lương bộ phận quản lý và chỉ có 4 người này, em muốn thêm một dòng nữa thì cũng không được, còn lại thì chạy vào vùng lương bộ phận sản xuất
Anh giúp em như sau ạk:
- Bên Sheet "Danhsach-NV" mình thêm một cột phụ và đặt mã hiệu cho từng người - Ví dụ: Những người có mã hiệu là QL thì chạy vào vùng lương của bộ phận quản lý, Những người có mã hiệu SX, thì chạy vào vùng lương của bộ phận sản xuất, không giới hạn số người (Vì số người là không cố định được ạk)
- Tương tự như thế, anh có thể đặt quy tắc giúp em, ví dụ sau này công ty thêm nhiều người, tách ra thành nhiều bộ phận (Ví dụ như: Tiện, Phay, Mài, Đóng gói...) thì em chỉ đặt mã tương ứng thì nó sẽ tự phân vùng cho em luôn (giống như phần tự nhận biết ký hiệu bên Sheet "Chamcong" vậy ạ, em chỉ tưởng tượng ra như thế),
- Sheet "Payroll_luong" chỉ cần chạy "Số thứ tự, Mã NV, Họ tên nhân viên và phân vùng, còn lại những Cell kế tiếp sau đó thì em cho chạy công thức ạ)
Trên đây là vài vấn đề em còn đang gặp phải, mong sớm nhận được sự quan tâm giúp đỡ của anh ạ!
Trân trọng!
Mình căn cứ vào từ "văn phòng" ở sheet danh sách NV cột bộ phận để phân nhóm, cách phân nhóm ở đơn vị bạn chỉ có bạn biết rỏ yêu cầu hiên tại và tương lai, bạn nên tự thiết kế và gởi file lên
 
Upvote 0
Mình căn cứ vào từ "văn phòng" ở sheet danh sách NV cột bộ phận để phân nhóm, cách phân nhóm ở đơn vị bạn chỉ có bạn biết rỏ yêu cầu hiên tại và tương lai, bạn nên tự thiết kế và gởi file lên
Làm phiền anh giờ khuya
Em gửi File, trong đó có các đơn vị: (Quản lý, văn phòng, phay, tiện, mài, quay bóng, QC, cắt dây), anh giúp em phân nhóm nhé
Em có ghi chú thêm vấn đề (tô màu đỏ) cạnh cuối trang chamcong nữa ạ
Mong anh giúp đỡ
Cảm ơn anh ạ!
 

File đính kèm

Upvote 0
Chào anh, quá trình sử dụng, Sheet "Payroll_luong" em gặp một số vấn đề, em có ghi chú trong File,
Chủ yếu sau khi em định dạng, cài công thức xong (File: "Chamcong_luong 112017-A"), nếu đến khi có nhân viên mới vào, em nhập danh sách và UpdateList thì bên Sheet "Payroll_luong" có tự động thêm người mới vào, nhưng công thức và định dạng bị chạy lung tung, em lại phải chỉnh lại từ đầu rất mất thời gian ạ! (File: "Chamcong_luong 112017-thử thêm NV mới")
Anh làm ơn xem và giúp em xử lý với ạ!
Cảm ơn anh!
 

File đính kèm

Upvote 0
Anh "HieuCD" oi. Cố gắng giúp em với nhé. Em đang cần lắm ạ!
Làm phiền anh ạ!
 
Upvote 0
Chào anh, quá trình sử dụng, Sheet "Payroll_luong" em gặp một số vấn đề, em có ghi chú trong File,
Chủ yếu sau khi em định dạng, cài công thức xong (File: "Chamcong_luong 112017-A"), nếu đến khi có nhân viên mới vào, em nhập danh sách và UpdateList thì bên Sheet "Payroll_luong" có tự động thêm người mới vào, nhưng công thức và định dạng bị chạy lung tung, em lại phải chỉnh lại từ đầu rất mất thời gian ạ! (File: "Chamcong_luong 112017-thử thêm NV mới")
Anh làm ơn xem và giúp em xử lý với ạ!
Cảm ơn anh!
- File trước bạn chỉ để một số cột nên chỉ copy các cột đó thôi, file mới thêm hàng loạt cột chỉnh lại code
- Bạn định dạng lung tung nên khung viền chạy lung tung
- Thêm người mới phải thêm đủ dữ liệu các cột, tốt nhất bạn nên chỉnh lại tất cả công thức có dạng
iferror(....,"") với kết quả là con số thành iferror(....,0) sẽ hết lổi value
 

File đính kèm

Upvote 0
- File trước bạn chỉ để một số cột nên chỉ copy các cột đó thôi, file mới thêm hàng loạt cột chỉnh lại code
- Bạn định dạng lung tung nên khung viền chạy lung tung
- Thêm người mới phải thêm đủ dữ liệu các cột, tốt nhất bạn nên chỉnh lại tất cả công thức có dạng
iferror(....,"") với kết quả là con số thành iferror(....,0) sẽ hết lổi value
Dạ. Em làm ngay ạ. Mong anh giúp em cho hoàn thiện ạ
Chân thành cảm ơn anh
 
Upvote 0
File mình gởi đã chỉnh lại định dạng, bạn thay hàm iferror là ổn
Dạ, nãy giờ em chỉnh lại IFERROR và nhập dữ liệu cho chạy rồi ạk!
Trước mắt thì File ổn rồi, nhưng còn vấn đề phân nhóm để xác định chi phí được phân bổ , em sẽ soạn lại dữ liệu, và gửi nhờ anh giúp tiếp ạk!
Chân thành cảm ơn anh, chúc anh buổi tối an lành!
 
Upvote 0
Làm phiền anh giờ khuya
Em gửi File, trong đó có các đơn vị: (Quản lý, văn phòng, phay, tiện, mài, quay bóng, QC, cắt dây), anh giúp em phân nhóm nhé
Em có ghi chú thêm vấn đề (tô màu đỏ) cạnh cuối trang chamcong nữa ạ
Mong anh giúp đỡ
Cảm ơn anh ạ!
Bạn tạo file chuẩn rồi gởi lên, sau nầy không được tự ý thêm cột dòng 2 bảng kết quả
Trong sheet qui ước bạn tạo 1 bảng phân loại nhân viên
 
Upvote 0
Bạn tạo file chuẩn rồi gởi lên, sau nầy không được tự ý thêm cột dòng 2 bảng kết quả
Trong sheet qui ước bạn tạo 1 bảng phân loại nhân viên
Chào anh, chúc buổi sáng cuối tuần vui vẻ!
Để em tạo lại File chuẩn và đầy đủ, sau đó gửi lại anh giúp em nhé
Cảm ơn anh nhiều ạ!
Trân trọng!
 
Upvote 0
Bạn tạo file chuẩn rồi gởi lên, sau nầy không được tự ý thêm cột dòng 2 bảng kết quả
Trong sheet qui ước bạn tạo 1 bảng phân loại nhân viên
Chào anh, nay em mới làm xong được file "Chuẩn" theo nhu cầu công việc của em để gửi lên cho anh giúp em đây ạ!
1. Sheet "QuyUoc" phần "Các bộ phận - Phòng ban" em thêm cột phụ để phân nhóm nhận biết nhân viên "Gián tiếp" và "Trực tiếp" . Không biết anh có cần cột phụ này không, nhưng ý em muốn là sau khi "Update_List" thì bên Sheet "Payroll_Luong" sẽ phân chia thành 2 phân nhóm "Gián tiếp" và "Trực tiếp" (Mục đích là để bộ phận kế toán theo dõi chi phí ạ)
2. Phần thêm cột : Sheet "DanhsachNV" em thêm 6 cột (Từ AB:AG), Sheet "Payroll_Luong" em cũng thêm các cột tương ứng (Từ K:P) và (Từ AD:AI)
Anh xem và chỉnh sửa lại giúp em với ạ
Thật ngại vì làm phiền anh vào ngày nghỉ Chủ nhật ạ
Chân thành cảm ơn và mong tin từ anh ạ!
Trân trọng!
 

File đính kèm

Upvote 0
Chào anh, nay em mới làm xong được file "Chuẩn" theo nhu cầu công việc của em để gửi lên cho anh giúp em đây ạ!
1. Sheet "QuyUoc" phần "Các bộ phận - Phòng ban" em thêm cột phụ để phân nhóm nhận biết nhân viên "Gián tiếp" và "Trực tiếp" . Không biết anh có cần cột phụ này không, nhưng ý em muốn là sau khi "Update_List" thì bên Sheet "Payroll_Luong" sẽ phân chia thành 2 phân nhóm "Gián tiếp" và "Trực tiếp" (Mục đích là để bộ phận kế toán theo dõi chi phí ạ)
2. Phần thêm cột : Sheet "DanhsachNV" em thêm 6 cột (Từ AB:AG), Sheet "Payroll_Luong" em cũng thêm các cột tương ứng (Từ K:p) và (Từ AD:AI)
Anh xem và chỉnh sửa lại giúp em với ạ
Thật ngại vì làm phiền anh vào ngày nghỉ Chủ nhật ạ
Chân thành cảm ơn và mong tin từ anh ạ!
Trân trọng!
Sheet ChamCong cột D và E là gì vậy? cách ghi nhận vào 2 cột nầy?
 
Upvote 0
Sheet ChamCong cột D và E là gì vậy? cách ghi nhận vào 2 cột nầy?
Dạ, Sheet "Chamcong" cột D là ghi tên tiếng Hoa (Do em lam việc cho doanh nghiệp Đài Loan) tương ứng với cột "D" của sheet "Danhsach_NV" , Cột "E" là cột "Phòng ban" tương ứng với cột "G" tại sheet "QuyUoc" ạ!
Anh giúp em ạ!
Trân trọng!
 
Upvote 0
Dạ, Sheet "Chamcong" cột D là ghi tên tiếng Hoa (Do em lam việc cho doanh nghiệp Đài Loan) tương ứng với cột "D" của sheet "Danhsach_NV" , Cột "E" là cột "Phòng ban" tương ứng với cột "G" tại sheet "QuyUoc" và cũng tương ứng với cột "G" sheet Danhsach_NV LUÔN ạ!
Anh giúp em ạ!
Trân trọng!
 
Upvote 0
Sheet ChamCong cột D và E là gì vậy? cách ghi nhận vào 2 cột nầy?
Dạ, Sheet "Chamcong" cột D là ghi tên tiếng Hoa (Do em lam việc cho doanh nghiệp Đài Loan) tương ứng với cột "D" của sheet "Danhsach_NV" , Cột "E" là cột "Phòng ban" tương ứng với cột "G" tại sheet "QuyUoc" và cũng tương ứng với cột "G" sheet Danhsach_NV LUÔN ạ!
Anh giúp em ạ!
Trân trọng!
 
Upvote 0
Dạ, Sheet "Chamcong" cột D là ghi tên tiếng Hoa (Do em lam việc cho doanh nghiệp Đài Loan) tương ứng với cột "D" của sheet "Danhsach_NV" , Cột "E" là cột "Phòng ban" tương ứng với cột "G" tại sheet "QuyUoc" và cũng tương ứng với cột "G" sheet Danhsach_NV LUÔN ạ!
Anh giúp em ạ!
Trân trọng!
Kiểm tra file
 

File đính kèm

Upvote 0
@ Chủ thớt:
(Hôm qua đã cố không viết vì tưởng chủ thớt đã hiểu "tâm tư").
Bạn may mắn là gặp anh Hiếu xem giúp bài của bạn, nên cái thớt này mới kéo dài hơn 60 bài...

Thông thường, sau khoảng 2-3 cái "nhưng mà còn" thì mọi người đã cao chạy xa bay.
Không ai có đủ sức để chạy theo những ý tưởng mỗi lúc một khác của quý vị được.
Bước viết code là bước cuối cùng, lúc đó không còn cái ý tưởng nào nữa. Quan trọng hơn cả là việc xây dựng cấu trúc dữ liệu và làm trước tiên.

"Nhưng mà còn... Nếu thế này thế kia..." gọi là dắt mũi. Không tin bạn thử đổi vị trí hỏi - trả lời xem...
 
Upvote 0
@ Chủ thớt:
(Hôm qua đã cố không viết vì tưởng chủ thớt đã hiểu "tâm tư").
Bạn may mắn là gặp anh Hiếu xem giúp bài của bạn, nên cái thớt này mới kéo dài hơn 60 bài...

Thông thường, sau khoảng 2-3 cái "nhưng mà còn" thì mọi người đã cao chạy xa bay.
Không ai có đủ sức để chạy theo những ý tưởng mỗi lúc một khác của quý vị được.
Bước viết code là bước cuối cùng, lúc đó không còn cái ý tưởng nào nữa. Quan trọng hơn cả là việc xây dựng cấu trúc dữ liệu và làm trước tiên.

"Nhưng mà còn... Nếu thế này thế kia..." gọi là dắt mũi. Không tin bạn thử đổi vị trí hỏi - trả lời xem...
Dạ. Em biết rồi ạ. Sẽ rút kinh nghiem lần sau. Thật là may mắn được các anh chị luôn quan tâm và đặc biệt là anh "HieuCD" đã nhiệt tình giúp đỡ trong bài này.
Giờ thì về cấu trúc file đã ổn rồi ạ! Em đang sử dụng nếu có vấn đề lại sẽ phiền anh chị giúp đỡ ( nhưng chắc chắn là không sửa cấu trúc "hàng- cột" của file nữa đâu ạ)
Chúc cả nhà buổi tối an lành
 
Upvote 0
Chào anh Hiếu, em gửi lại File nhờ anh xem giúp ạ,
1. Tại Sheet "Chamcong" Khi chạy lệnh Kết xuất File, thì tại "AI4" không kết xuất ra số giá trị Value mà chỉ toàn là dấu "#####" anh giúp em điều chỉnh lại ạ!

2. Sheet "Chamcong" Sau khi em chấm công và kiểm tra từ "F:AJ" thì bị hiện tượng (Gần như lặp lại theo chu kỳ) tại những ô em tô màu vàng và màu đỏ như sau:
+++ Tại ô màu vàng em chấm công 3 tiếng tăng ca thì tại cột "AU" có thể hiện chính xác số giờ, nhưng cột "BB" lại thể hiện là 2 (trong khi theo điều kiện là chỉ thể hiện 1)
+++ Tại ô màu đỏ, em chấm công 3 tiếng tăng ca thì tại cột "AU" không thể hiện số giờ tăng ca và tại cột "BB" cũng không thể hiện số tương ứng (là 1 "hưởng 1 bữa ăn giữa ca")

3. Sheet "Payrol_Luong" khi em chạy lện 'Kết xuất lương" thì chỉ có một số dòng và cột chuyển dữ liệu thành giá trị "Value" còn lại thì công thức vẫn chạy qua theo, anh giúp em cho chuyển tòan bộ thành giá trị "value" ở File được kết xuất ạ!
Các vấn đề trên, anh làm ơn xem giúp em nhé. em cần lắm ạ!
Cảm ơn anh nhiều!
Trân trọng!
 

File đính kèm

Upvote 0
Chào anh Hiếu, em gửi lại File nhờ anh xem giúp ạ,
1. Tại Sheet "Chamcong" Khi chạy lệnh Kết xuất File, thì tại "AI4" không kết xuất ra số giá trị Value mà chỉ toàn là dấu "#####" anh giúp em điều chỉnh lại ạ!

2. Sheet "Chamcong" Sau khi em chấm công và kiểm tra từ "F:AJ" thì bị hiện tượng (Gần như lặp lại theo chu kỳ) tại những ô em tô màu vàng và màu đỏ như sau:
+++ Tại ô màu vàng em chấm công 3 tiếng tăng ca thì tại cột "AU" có thể hiện chính xác số giờ, nhưng cột "BB" lại thể hiện là 2 (trong khi theo điều kiện là chỉ thể hiện 1)
+++ Tại ô màu đỏ, em chấm công 3 tiếng tăng ca thì tại cột "AU" không thể hiện số giờ tăng ca và tại cột "BB" cũng không thể hiện số tương ứng (là 1 "hưởng 1 bữa ăn giữa ca")

3. Sheet "Payrol_Luong" khi em chạy lện 'Kết xuất lương" thì chỉ có một số dòng và cột chuyển dữ liệu thành giá trị "Value" còn lại thì công thức vẫn chạy qua theo, anh giúp em cho chuyển tòan bộ thành giá trị "value" ở File được kết xuất ạ!
Các vấn đề trên, anh làm ơn xem giúp em nhé. em cần lắm ạ!
Cảm ơn anh nhiều!
Trân trọng!
1. Tại Sheet "Chamcong" Khi chạy lệnh Kết xuất File và 3. Sheet "Payrol_Luong" khi em chạy lện 'Kết xuất lương": Đâu biết bạn muốn làm gì mà chỉnh, bạn nên nhờ người viết code chỉnh lại
2. Ô màu đỏ không có làm việc sao lại tăng ca?
Ô màu vàng sai do mình viết thiếu 1 dòng lệnh: t=0
Mã:
Sub Tinh_Cong()
    Dim sArr, dArr, cArr, pArr, S, tmp
    Dim I As Long, j As Long, lR As Long, k As Long, n As Long, jk As Long, vm As Double
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheets("Chamcong")
      lR = .Range("C65535").End(xlUp).Row
      If lR > 5 Then
        pArr = .Range("AK5:AR5").Value
        sArr = .Range("F6:AJ" & lR).Resize(, 31).Value
        ReDim dArr(1 To UBound(sArr), 1 To 10)
        ReDim cArr(1 To UBound(sArr), 1 To 8)
        For I = 1 To UBound(sArr) Step 7
          For j = 1 To 31
            If sArr(I, j) <> "" Then
              dArr(I, 9) = dArr(I, 9) + 8
              If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) + 8
              cArr(I, 7) = cArr(I, 7) + 1
             
              S = Split(sArr(I, j) & ";X", ";")
              For n = LBound(S) To UBound(S)
                tmp = UCase(S(n))
                If InStr(tmp, "X") = 0 Then
                  t = 0
                  For jk = 1 To 8
                    If InStr(tmp, pArr(1, jk)) Then
                      If Replace(tmp, pArr(1, jk), "") = "" Then vm = 8 Else vm = CDbl(Replace(tmp, pArr(1, jk), ""))
                      dArr(I, jk) = dArr(I, jk) + vm
                      t = t + vm
                      If jk > 2 Then
                        dArr(I, 9) = dArr(I, 9) - vm
                        If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) - vm
                      End If
                    End If
                  Next jk
                  If t > 4 Then cArr(I, 7) = cArr(I, 7) - 1
                End If
              Next n
             
              t = 0
              For k = 1 To 2 'Tang ca ngay thuong
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            Else
              t = 0
              For k = 3 To 6 'Tang ca ngay le, Chu nhat
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            End If
          Next j
        Next I
      End If
      .Range("AK6").Resize(UBound(dArr), 10) = dArr
      .Range("AU6").Resize(UBound(dArr), 8) = cArr
    End With
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
1. Tại Sheet "Chamcong" Khi chạy lệnh Kết xuất File và 3. Sheet "Payrol_Luong" khi em chạy lện 'Kết xuất lương": Đâu biết bạn muốn làm gì mà chỉnh, bạn nên nhờ người viết code chỉnh lại
2. Ô màu đỏ không có làm việc sao lại tăng ca?
Ô màu vàng sai do mình viết thiếu 1 dòng lệnh: t=0
Mã:
Sub Tinh_Cong()
    Dim sArr, dArr, cArr, pArr, S, tmp
    Dim I As Long, j As Long, lR As Long, k As Long, n As Long, jk As Long, vm As Double
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheets("Chamcong")
      lR = .Range("C65535").End(xlUp).Row
      If lR > 5 Then
        pArr = .Range("AK5:AR5").Value
        sArr = .Range("F6:AJ" & lR).Resize(, 31).Value
        ReDim dArr(1 To UBound(sArr), 1 To 10)
        ReDim cArr(1 To UBound(sArr), 1 To 8)
        For I = 1 To UBound(sArr) Step 7
          For j = 1 To 31
            If sArr(I, j) <> "" Then
              dArr(I, 9) = dArr(I, 9) + 8
              If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) + 8
              cArr(I, 7) = cArr(I, 7) + 1
            
              S = Split(sArr(I, j) & ";X", ";")
              For n = LBound(S) To UBound(S)
                tmp = UCase(S(n))
                If InStr(tmp, "X") = 0 Then
                  t = 0
                  For jk = 1 To 8
                    If InStr(tmp, pArr(1, jk)) Then
                      If Replace(tmp, pArr(1, jk), "") = "" Then vm = 8 Else vm = CDbl(Replace(tmp, pArr(1, jk), ""))
                      dArr(I, jk) = dArr(I, jk) + vm
                      t = t + vm
                      If jk > 2 Then
                        dArr(I, 9) = dArr(I, 9) - vm
                        If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) - vm
                      End If
                    End If
                  Next jk
                  If t > 4 Then cArr(I, 7) = cArr(I, 7) - 1
                End If
              Next n
            
              t = 0
              For k = 1 To 2 'Tang ca ngay thuong
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            Else
              t = 0
              For k = 3 To 6 'Tang ca ngay le, Chu nhat
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            End If
          Next j
        Next I
      End If
      .Range("AK6").Resize(UBound(dArr), 10) = dArr
      .Range("AU6").Resize(UBound(dArr), 8) = cArr
    End With
    Application.ScreenUpdating = True
End Sub
Dạ. Em Coppy Code về và chạy ổn rồi ạk!
Chúc anh buổi tối an lành
Cảm ơn anh nhiều ạk!
 
Upvote 0
1. Tại Sheet "Chamcong" Khi chạy lệnh Kết xuất File và 3. Sheet "Payrol_Luong" khi em chạy lện 'Kết xuất lương": Đâu biết bạn muốn làm gì mà chỉnh, bạn nên nhờ người viết code chỉnh lại
2. Ô màu đỏ không có làm việc sao lại tăng ca?
Ô màu vàng sai do mình viết thiếu 1 dòng lệnh: t=0
Mã:
Sub Tinh_Cong()
    Dim sArr, dArr, cArr, pArr, S, tmp
    Dim I As Long, j As Long, lR As Long, k As Long, n As Long, jk As Long, vm As Double
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheets("Chamcong")
      lR = .Range("C65535").End(xlUp).Row
      If lR > 5 Then
        pArr = .Range("AK5:AR5").Value
        sArr = .Range("F6:AJ" & lR).Resize(, 31).Value
        ReDim dArr(1 To UBound(sArr), 1 To 10)
        ReDim cArr(1 To UBound(sArr), 1 To 8)
        For I = 1 To UBound(sArr) Step 7
          For j = 1 To 31
            If sArr(I, j) <> "" Then
              dArr(I, 9) = dArr(I, 9) + 8
              If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) + 8
              cArr(I, 7) = cArr(I, 7) + 1
            
              S = Split(sArr(I, j) & ";X", ";")
              For n = LBound(S) To UBound(S)
                tmp = UCase(S(n))
                If InStr(tmp, "X") = 0 Then
                  t = 0
                  For jk = 1 To 8
                    If InStr(tmp, pArr(1, jk)) Then
                      If Replace(tmp, pArr(1, jk), "") = "" Then vm = 8 Else vm = CDbl(Replace(tmp, pArr(1, jk), ""))
                      dArr(I, jk) = dArr(I, jk) + vm
                      t = t + vm
                      If jk > 2 Then
                        dArr(I, 9) = dArr(I, 9) - vm
                        If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) - vm
                      End If
                    End If
                  Next jk
                  If t > 4 Then cArr(I, 7) = cArr(I, 7) - 1
                End If
              Next n
            
              t = 0
              For k = 1 To 2 'Tang ca ngay thuong
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            Else
              t = 0
              For k = 3 To 6 'Tang ca ngay le, Chu nhat
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            End If
          Next j
        Next I
      End If
      .Range("AK6").Resize(UBound(dArr), 10) = dArr
      .Range("AU6").Resize(UBound(dArr), 8) = cArr
    End With
    Application.ScreenUpdating = True
End Sub
Anh Hiếu ơi, Thực sự xin lỗi vì em không có ý "cẩu thả" hay gì gì đâu, nhưng giờ em mới lại phát hiện một vấn đề
Anh làm ơn giúp em ạ!
Vì công ty em trong một tháng được nghỉ 2 thứ 7 (một tháng làm 24 ngày), nên nếu có người nào đó đi làm đủ cả 4 thứ 7 thì ngẫu nhiên em phải chọn 2 thứ 7 bất kỳ trong tháng để tính "tăng ca thường", nhưng theo điều kiện hiện tại thì phải đánh dấu "X" (nghĩa là có đi làm) thì mới tính được số giờ tăng ca, mà như vậy thì số giờ thực tế lại bị sai lệch, mà không đánh dấu "X" (có đi làm) thì không tính được giờ tăng ca. Anh giúp em chỉnh lại Code để khi em chon 2 ngày thứ 7 bất kỳ để chấm tăng ca mà không cần đánh dấu "X" thì vẫn tính được giờ tăng ca ạ!
Xin cảm ơn anh!
 
Upvote 0
Anh Hiếu ơi, Thực sự xin lỗi vì em không có ý "cẩu thả" hay gì gì đâu, nhưng giờ em mới lại phát hiện một vấn đề
Anh làm ơn giúp em ạ!
Vì công ty em trong một tháng được nghỉ 2 thứ 7 (một tháng làm 24 ngày), nên nếu có người nào đó đi làm đủ cả 4 thứ 7 thì ngẫu nhiên em phải chọn 2 thứ 7 bất kỳ trong tháng để tính "tăng ca thường", nhưng theo điều kiện hiện tại thì phải đánh dấu "X" (nghĩa là có đi làm) thì mới tính được số giờ tăng ca, mà như vậy thì số giờ thực tế lại bị sai lệch, mà không đánh dấu "X" (có đi làm) thì không tính được giờ tăng ca. Anh giúp em chỉnh lại Code để khi em chon 2 ngày thứ 7 bất kỳ để chấm tăng ca mà không cần đánh dấu "X" thì vẫn tính được giờ tăng ca ạ!
Xin cảm ơn anh!
Chào buổi sáng anh "HieuCD"
Anh làm ơn giúp em vấn đề nêu trên nhé
Xin lỗi vì làm phiền anh buổi sáng sớm ạ
Mong tin của anh!
 
Upvote 0
Chào buổi sáng anh "HieuCD"
Anh làm ơn giúp em vấn đề nêu trên nhé
Xin lỗi vì làm phiền anh buổi sáng sớm ạ
Mong tin của anh!
Chỉnh lại code
For k = 1 To 6 'Tang ca ngay le, Chu nhat
Chưa kiểm tra hết các khả năng
Mã:
Sub Tinh_Cong()
    Dim sArr, dArr, cArr, pArr, S, tmp
    Dim I As Long, j As Long, lR As Long, k As Long, n As Long, jk As Long, vm As Double
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheets("Chamcong")
      lR = .Range("C65535").End(xlUp).Row
      If lR > 5 Then
        pArr = .Range("AK5:AR5").Value
        sArr = .Range("F6:AJ" & lR).Resize(, 31).Value
        ReDim dArr(1 To UBound(sArr), 1 To 10)
        ReDim cArr(1 To UBound(sArr), 1 To 8)
        For I = 1 To UBound(sArr) Step 7
          For j = 1 To 31
            If sArr(I, j) <> "" Then
              dArr(I, 9) = dArr(I, 9) + 8
              If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) + 8
              cArr(I, 7) = cArr(I, 7) + 1
             
              S = Split(sArr(I, j) & ";X", ";")
              For n = LBound(S) To UBound(S)
                tmp = UCase(S(n))
                If InStr(tmp, "X") = 0 Then
                  t = 0
                  For jk = 1 To 8
                    If InStr(tmp, pArr(1, jk)) Then
                      If Replace(tmp, pArr(1, jk), "") = "" Then vm = 8 Else vm = CDbl(Replace(tmp, pArr(1, jk), ""))
                      dArr(I, jk) = dArr(I, jk) + vm
                      t = t + vm
                      If jk > 2 Then
                        dArr(I, 9) = dArr(I, 9) - vm
                        If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) - vm
                      End If
                    End If
                  Next jk
                  If t > 4 Then cArr(I, 7) = cArr(I, 7) - 1
                End If
              Next n
             
              t = 0
              For k = 1 To 2 'Tang ca ngay thuong
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            Else
              t = 0
              For k = 1 To 6 'Tang ca ngay le, Chu nhat
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            End If
          Next j
        Next I
      End If
      .Range("AK6").Resize(UBound(dArr), 10) = dArr
      .Range("AU6").Resize(UBound(dArr), 8) = cArr
    End With
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Chỉnh lại code
For k = 1 To 6 'Tang ca ngay le, Chu nhat
Chưa kiểm tra hết các khả năng
Mã:
Sub Tinh_Cong()
    Dim sArr, dArr, cArr, pArr, S, tmp
    Dim I As Long, j As Long, lR As Long, k As Long, n As Long, jk As Long, vm As Double
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheets("Chamcong")
      lR = .Range("C65535").End(xlUp).Row
      If lR > 5 Then
        pArr = .Range("AK5:AR5").Value
        sArr = .Range("F6:AJ" & lR).Resize(, 31).Value
        ReDim dArr(1 To UBound(sArr), 1 To 10)
        ReDim cArr(1 To UBound(sArr), 1 To 8)
        For I = 1 To UBound(sArr) Step 7
          For j = 1 To 31
            If sArr(I, j) <> "" Then
              dArr(I, 9) = dArr(I, 9) + 8
              If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) + 8
              cArr(I, 7) = cArr(I, 7) + 1
            
              S = Split(sArr(I, j) & ";X", ";")
              For n = LBound(S) To UBound(S)
                tmp = UCase(S(n))
                If InStr(tmp, "X") = 0 Then
                  t = 0
                  For jk = 1 To 8
                    If InStr(tmp, pArr(1, jk)) Then
                      If Replace(tmp, pArr(1, jk), "") = "" Then vm = 8 Else vm = CDbl(Replace(tmp, pArr(1, jk), ""))
                      dArr(I, jk) = dArr(I, jk) + vm
                      t = t + vm
                      If jk > 2 Then
                        dArr(I, 9) = dArr(I, 9) - vm
                        If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) - vm
                      End If
                    End If
                  Next jk
                  If t > 4 Then cArr(I, 7) = cArr(I, 7) - 1
                End If
              Next n
            
              t = 0
              For k = 1 To 2 'Tang ca ngay thuong
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            Else
              t = 0
              For k = 1 To 6 'Tang ca ngay le, Chu nhat
                cArr(I, k) = cArr(I, k) + sArr(I + k, j)
                t = t + sArr(I + k, j)
              Next k
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            End If
          Next j
        Next I
      End If
      .Range("AK6").Resize(UBound(dArr), 10) = dArr
      .Range("AU6").Resize(UBound(dArr), 8) = cArr
    End With
    Application.ScreenUpdating = True
End Sub
Dạ, em down về cho chạy rồi, chạy như vầy thì bảng tính không phân biệt giữa ngày thường và ngày chủ nhật, nhưng em nghĩ cũng không sao, mình hiểu và đánh đúng ô đúng dòng thì chấm công cũng chính xác rồi ạ, để em cho chạy tiếp xem còn vấn đề gì khác không ạ!
Cảm ơn anh!
 
Upvote 0
Dạ, em down về cho chạy rồi, chạy như vầy thì bảng tính không phân biệt giữa ngày thường và ngày chủ nhật, nhưng em nghĩ cũng không sao, mình hiểu và đánh đúng ô đúng dòng thì chấm công cũng chính xác rồi ạ, để em cho chạy tiếp xem còn vấn đề gì khác không ạ!
Cảm ơn anh!
Bạn gởi file với đầy đủ các trường hợp bạn chấm công, và kết quả mới biết bạn sẽ làm gì và yêu cầu ra sao, toàn đoán mò nên khó đúng ý
 
Upvote 0
Bạn gởi file với đầy đủ các trường hợp bạn chấm công, và kết quả mới biết bạn sẽ làm gì và yêu cầu ra sao, toàn đoán mò nên khó đúng ý
Dạ, vậy để em soạn lại tất cả các trường hợp phát sinh trong bảng chấm công và kết quả cần nhận được, và gửi lại File cho anh
Nhờ anh giúp ạ
Chúc anh buổi sáng an lành!
Trân trọng!
 
Upvote 0
Bạn gởi file với đầy đủ các trường hợp bạn chấm công, và kết quả mới biết bạn sẽ làm gì và yêu cầu ra sao, toàn đoán mò nên khó đúng ý
Chào anh, em gửi lại File có các trường hợp phát sinh khi chấm công của bên em (Em làm ví dụ cho 2 NV là "NU001" và "NU002" đồng thời em có ghi chú các vấn đề cần anh giúp đỡ giải quyết trong file luôn rồi ạ!
Với trường hợp hôm trước anh cho điều kiện là : "For k = 1 To 6 'Tang ca ngay le, Chu nhat" theo em thì tuy nó không phân biệt được ngày lễ hay ngày thường, nhưng em thấy không sao, chỉ cần mình đánh đúng cột dòng là được, nhưng cũng nhờ anh xem giúp còn phương án nào tối ưu hơn không ạ!
Mong nhận được sự giúp đỡ của anh
Chúc anh buổi chiều cuối tuần hạnh phúc vui vẻ
Trân trọng!
 

File đính kèm

Upvote 0
Chào anh, em gửi lại File có các trường hợp phát sinh khi chấm công của bên em (Em làm ví dụ cho 2 NV là "NU001" và "NU002" đồng thời em có ghi chú các vấn đề cần anh giúp đỡ giải quyết trong file luôn rồi ạ!
Với trường hợp hôm trước anh cho điều kiện là : "For k = 1 To 6 'Tang ca ngay le, Chu nhat" theo em thì tuy nó không phân biệt được ngày lễ hay ngày thường, nhưng em thấy không sao, chỉ cần mình đánh đúng cột dòng là được, nhưng cũng nhờ anh xem giúp còn phương án nào tối ưu hơn không ạ!
Mong nhận được sự giúp đỡ của anh
Chúc anh buổi chiều cuối tuần hạnh phúc vui vẻ
Trân trọng!
Chạy code
Mã:
Sub Tinh_Cong()
    Dim sArr, dArr, cArr, pArr, S, tmp
    Dim I As Long, j As Long, lR As Long, k As Long, n As Long, jk As Long, vm As Double
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheets("Chamcong")
      lR = .Range("C65535").End(xlUp).Row
      If lR > 5 Then
        pArr = .Range("AK5:AR5").Value
        sArr = .Range("F6:AJ" & lR).Resize(, 31).Value
        ReDim dArr(1 To UBound(sArr), 1 To 10)
        ReDim cArr(1 To UBound(sArr), 1 To 8)
        For I = 1 To UBound(sArr) Step 7
          For j = 1 To 31
            If sArr(I, j) <> "" Then
              dArr(I, 9) = dArr(I, 9) + 8
              If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) + 8
              cArr(I, 7) = cArr(I, 7) + 1
             
              S = Split(sArr(I, j) & ";X", ";")
              For n = LBound(S) To UBound(S)
                tmp = UCase(S(n))
                If InStr(tmp, "X") = 0 Then
                  t = 0
                  For jk = 1 To 8
                    If InStr(tmp, pArr(1, jk)) Then
                      If Replace(tmp, pArr(1, jk), "") = "" Then vm = 8 Else vm = CDbl(Replace(tmp, pArr(1, jk), ""))
                      dArr(I, jk) = dArr(I, jk) + vm
                      t = t + vm
                      If jk > 2 Then
                        dArr(I, 9) = dArr(I, 9) - vm
                        If InStr(sArr(I, j), "D") Then dArr(I, 10) = dArr(I, 10) - vm
                      End If
                    End If
                  Next jk
                  If t > 4 Then cArr(I, 7) = cArr(I, 7) - 1
                End If
              Next n
            End If
             
            For k = 1 To 6
              cArr(I, k) = cArr(I, k) + sArr(I + k, j)
              t = 0
              t = t + sArr(I + k, j)
              If t >= 3 Then cArr(I, 8) = cArr(I, 8) + 1
            Next k
          Next j
        Next I
      End If
      .Range("AK6").Resize(UBound(dArr), 10) = dArr
      .Range("AU6").Resize(UBound(dArr), 8) = cArr
    End With
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Chúc anh "HieuCD" buổi tối cuối tuần vui vẻ
Em cho coppy code về rồi, để em cho chạy thử, nếu ổn hoặc nếu có vấn đề gì khác, em cũng sẽ báo cáo với anh ạ!
Chân thành cảm ơn anh
À...! em phải mời cafe đa tạ anh như thế nào đây ạ, là lời chân thành đấy ạ. anh mở lòng nhận lời em được không ạ!
Mong tin anh!
 
Upvote 0
Chúc anh "HieuCD" buổi tối cuối tuần vui vẻ
Em cho coppy code về rồi, để em cho chạy thử, nếu ổn hoặc nếu có vấn đề gì khác, em cũng sẽ báo cáo với anh ạ!
Chân thành cảm ơn anh
À...! em phải mời cafe đa tạ anh như thế nào đây ạ, là lời chân thành đấy ạ. anh mở lòng nhận lời em được không ạ!
Mong tin anh!
Cám ơn bạn, giúp được bạn là mình vui rồi/-*+/
 
Upvote 0
À...! em phải mời cafe đa tạ anh như thế nào đây ạ, là lời chân thành đấy ạ. anh mở lòng nhận lời em được không ạ!
Mong tin anh!
để mình tư vấn cho , anh HieuCD ngại đó , bạn mua thẻ cào gửi anh í cũng đc , tùy tâm nhé , nếu anh í nhất quyết ko dùng thì bạn gửi cho mình , mình sẽ thuyết phục anh í ^^ ,
số Viettel càng tốt nhé |||||
 
Upvote 0
để mình tư vấn cho , anh HieuCD ngại đó , bạn mua thẻ cào gửi anh í cũng đc , tùy tâm nhé , nếu anh í nhất quyết ko dùng thì bạn gửi cho mình , mình sẽ thuyết phục anh í ^^ ,
số Viettel càng tốt nhé |||||
Muốn gặp mặt anh "HieuCD" mời cafe để được nói lời cảm ơn chân thành ạk. Ở saigon em cũng chạy lên được. Vì em ở đồng nai ạ!
 
Upvote 0
Có nghĩa là bắt đầu từ khâu thiết kế các trang tính chủ iếu & những bảng biểu cần thiết trong trang fụ trợ

Lấy ví dụ Người ta không nhập tên của bộ fận mà người nào đó thuộc về; Mà nhập mã của tên đôn vị đó
Chẳng hạn Tên đơn vị là 'Phòng Kế hoạch-VT', ta chỉ cần nhập kí tự E (trong bảng danh mục thì E ứng với tên fòng này.)
. . . . .
Bạn nên sớm quay lại ngay từ bây giờ; Chứ sau nữa thì còn tiếc nuốt nhiều hơn!
Chào anh (chị) "HYen17", File này anh "HieuCD" đã giúp hoàn thiện phần chấm công và những vấn đề bên sheet "Payroll" rồi
Còn phần "Kết xuất dữ liệu" phần này do anh (chị) "HYen17" ở bài trước làm giúp nên tiếp tục nhờ hoàn thiện ạ!
1. Sheet "Chamcong" khi chạy lệnh kết xuất thì tại ô "AI4" không kết xuất giá trị "Value" mà thành ký hiệu "#####" (Ngoài ra, hình hình trên sheet này không được kết xuất qua theo File mới)
2. Tại sheet "Payroll_Luong" , khi chạy lênh kết xuất, các cột không hoàn toàn chuyển thành giá trị Value, mà có cột vẫn chuyển nguyên công thức từ File cũ qua
Rất mong nhận được sự giúp đỡ từ anh (chị) ạ!
Chân thành cảm ơn!
Trân trọng
 
Upvote 0
Chào anh (chị) "HYen17", File này anh "HieuCD" đã giúp hoàn thiện phần chấm công và những vấn đề bên sheet "Payroll" rồi
Còn phần "Kết xuất dữ liệu" phần này do anh (chị) "HYen17" ở bài trước làm giúp nên tiếp tục nhờ hoàn thiện ạ!
1. Sheet "Chamcong" khi chạy lệnh kết xuất thì tại ô "AI4" không kết xuất giá trị "Value" mà thành ký hiệu "#####" (Ngoài ra, hình hình trên sheet này không được kết xuất qua theo File mới)
2. Tại sheet "Payroll_Luong" , khi chạy lênh kết xuất, các cột không hoàn toàn chuyển thành giá trị Value, mà có cột vẫn chuyển nguyên công thức từ File cũ qua
Rất mong nhận được sự giúp đỡ từ anh (chị) ạ!
Chân thành cảm ơn!
Trân trọng
Xin lỗi quên gửi kèm file, giờ gửi lại kèm theo File a!
 

File đính kèm

Upvote 0
Có nghĩa là bắt đầu từ khâu thiết kế các trang tính chủ iếu & những bảng biểu cần thiết trong trang fụ trợ

Lấy ví dụ Người ta không nhập tên của bộ fận mà người nào đó thuộc về; Mà nhập mã của tên đôn vị đó
Chẳng hạn Tên đơn vị là 'Phòng Kế hoạch-VT', ta chỉ cần nhập kí tự E (trong bảng danh mục thì E ứng với tên fòng này.)
. . . . .
Bạn nên sớm quay lại ngay từ bây giờ; Chứ sau nữa thì còn tiếc nuốt nhiều hơn!
Bác "HaiYen17" ơi. Vui lòng giúp em cái code kết xuất đi ạ!
 
Upvote 0
Có nghĩa là bắt đầu từ khâu thiết kế các trang tính chủ iếu & những bảng biểu cần thiết trong trang fụ trợ

Lấy ví dụ Người ta không nhập tên của bộ fận mà người nào đó thuộc về; Mà nhập mã của tên đôn vị đó
Chẳng hạn Tên đơn vị là 'Phòng Kế hoạch-VT', ta chỉ cần nhập kí tự E (trong bảng danh mục thì E ứng với tên fòng này.)
. . . . .
Bạn nên sớm quay lại ngay từ bây giờ; Chứ sau nữa thì còn tiếc nuốt nhiều hơn!
Bác "HYen17" ơi. Vấn đề em nhờ bác giúp code kết xuất File. Em có phải lập Thread mới không ạ. Vì không thấy bác trả lời nên em không biết tiếp tục viết ở đây có phạm quy không.
Mong tin của bác
 
Upvote 0

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

Back
Top Bottom