Nhờ giúp tạo macro in theo list hồ sơ, có quy định sheet in theo mỗi số thứ tự

Liên hệ QC
Thêm nhiều thế :p:p:p
Mã:
Function SumDate(ByVal Date_value As Date, _
        ByVal Table_Lookup As Range, ByVal Col_Index As Long) As Long
    Dim sArr(), i As Long, fDate As Date, eDate As Date, Sum_Date As Long
sArr = Table_Lookup.Value
For i = 1 To UBound(sArr)
    If sArr(i, Col_Index) <> Empty Then
        fDate = sArr(i, 1): eDate = sArr(i, 2)
        If Date_value <= eDate Then
            If Date_value >= fDate Then
                Sum_Date = sArr(i, Col_Index) + Sum_Date
            End If
        End If
    End If
Next i
SumDate = Sum_Date
End Function
em mong muốn ngày 23/02/2020 là 5 ạ. kiểu như là 19/02/2020 đến 23/02/2020 là 2 người... từ ngày 23/02/2020 đến ngày 26/02/2020 là 5 người.. thì ngày 23/02/2020 sẽ lấy bằng với giá trị bắt của công việc bắt đầu sau. theo công thức của anh thì đang là 7 mất rồi ạ
Bài đã được tự động gộp:

em mong muốn ngày 23/02/2020 là 5 ạ. kiểu như là 19/02/2020 đến 23/02/2020 là 2 người... từ ngày 23/02/2020 đến ngày 26/02/2020 là 5 người.. thì ngày 23/02/2020 sẽ lấy bằng với giá trị bắt của công việc bắt đầu sau. theo công thức của anh thì đang là 7 mất rồi ạ
giá trị của ngày 23/02/2020 được gán trong ô G5 để mình có thể thay đổi ngày trong ô đó ạ
 
em mong muốn ngày 23/02/2020 là 5 ạ. kiểu như là 19/02/2020 đến 23/02/2020 là 2 người... từ ngày 23/02/2020 đến ngày 26/02/2020 là 5 người.. thì ngày 23/02/2020 sẽ lấy bằng với giá trị bắt của công việc bắt đầu sau. theo công thức của anh thì đang là 7 mất rồi ạ
Bài đã được tự động gộp:


giá trị của ngày 23/02/2020 được gán trong ô G5 để mình có thể thay đổi ngày trong ô đó ạ
ngày 23/2/2020 có 2 em
+ em 1 nhân công =2
+ em 2 nhân công = 5
Vậy nó phải = 7 chứ sao lại = 5
 
ngày 23/2/2020 có 2 em
+ em 1 nhân công =2
+ em 2 nhân công = 5
Vậy nó phải = 7 chứ sao lại = 5
dạ. em muốn để ngày 23/02/2020 nghiệm thu công việc đào móng rồi thì nhân công chỉ lấy theo nhân công thực hiện công việc xây tường móng
 
dạ. em muốn để ngày 23/02/2020 nghiệm thu công việc đào móng rồi thì nhân công chỉ lấy theo nhân công thực hiện công việc xây tường móng
Bạn lấy C7=D6+1
Còn không thì thay If Date_value <= eDate Then thành If Date_value < eDate Then thử xem sao
Mình thì bố trí dữ liệu kiểu này
1589014750341.png
 
Bạn lấy C7=D6+1
Còn không thì thay If Date_value <= eDate Then thành If Date_value < eDate Then thử xem sao
Mình thì bố trí dữ liệu kiểu này
Bạn lấy C7=D6+1
Còn không thì thay If Date_value <= eDate Then thành If Date_value < eDate Then thử xem sao
Mình thì bố trí dữ liệu kiểu này
dạ. em sửa theo bác rồi ạ. Nhưng có vẻ chưa được tổng quát ạ. Khi có công việc thi công và nghiệm thu trong cùng ngày kết quả trả về 0. Bác xem giúp em với ạ
 

File đính kèm

  • tinh nhân công2.xlsm
    14.5 KB · Đọc: 8
dạ. em sửa theo bác rồi ạ. Nhưng có vẻ chưa được tổng quát ạ. Khi có công việc thi công và nghiệm thu trong cùng ngày kết quả trả về 0. Bác xem giúp em với ạ
Bạn thêm dòng If fDate = eDate Then eDate = eDate + 1 vào dưới dòng fDate = sArr(i, 1): eDate = sArr(i, 2) xem sao
 
Tốt nhất là Bạn làm thêm 1 cột ngày nghiệm thu nữa.
Dạ... Ngày nghiệm thu thì em có 1 cột riêng rồi ạ. Với đoạn code trên của bác khi em thử với ngày 26/02/2020 thì bị lỗi trả về giá trị bằng 0. Nhờ bác sửa thêm đoạn code em với ạ
 
Dạ... Ngày nghiệm thu thì em có 1 cột riêng rồi ạ. Với đoạn code trên của bác khi em thử với ngày 26/02/2020 thì bị lỗi trả về giá trị bằng 0. Nhờ bác sửa thêm đoạn code em với ạ
Vậy thì mình đầu hàng rồi. Bạn gắng chờ có các Anh (Chị) khác ngang qua giúp đỡ nhé
 
Vậy thì mình đầu hàng rồi. Bạn gắng chờ có các Anh (Chị) khác ngang qua giúp đỡ nhé
có anh trên diễn đàn viết cho công thức này ạ. bác xem có thể giúp em lấy giá trị cần lấy theo ngày tháng ô G5 được không ạ
 

File đính kèm

  • tinh nhân công2 (4).xlsx
    9.2 KB · Đọc: 8
Bạn tham khảo thử
Mã:
Sub InBB()
    Dim Rng As Range, Cll As Range, SoBB As String
With Sheet1
    Set Rng = .Range("A11", .Range("A" & Rows.Count).End(xlUp))
End With
With Sheet2
    For Each Cll In Rng
        If Cll.Value <> Empty And IsNumeric(Cll.Value) Then
            .Range("N55").Value = Cll.Value
            .PrintPreview
            SoBB = .Range("A53").Value
            If InStrRev(SoBB, "VC", -1, vbBinaryCompare) > 0 Then
                Sheet3.PrintPreview: Sheet4.PrintPreview: GoTo Tiep
            End If
            If InStrRev(SoBB, "ATGT", -1, vbBinaryCompare) > 0 Then
                Sheet5.PrintPreview: GoTo Tiep
            End If
            If InStrRev(SoBB, "BT", -1, vbBinaryCompare) > 0 Then
                Sheet4.PrintPreview
            End If
        End If
Tiep:
    Next
End With
End Sub
Khi nào ưng cái bụng thì thay PrintPreview bằng PrintOut nhoé
với đoạn code trên em muốn gọi code ẩn hiện dòng ở sheet3 thì mình thêm vào đâu ạ. bác hướng dẫn em với ạ
 
Bạn tham khảo thử
Mã:
Sub InBB()
    Dim Rng As Range, Cll As Range, SoBB As String
With Sheet1
    Set Rng = .Range("A11", .Range("A" & Rows.Count).End(xlUp))
End With
With Sheet2
    For Each Cll In Rng
        If Cll.Value <> Empty And IsNumeric(Cll.Value) Then
            .Range("N55").Value = Cll.Value
            .PrintPreview
            SoBB = .Range("A53").Value
            If InStrRev(SoBB, "VC", -1, vbBinaryCompare) > 0 Then
                Sheet3.PrintPreview: Sheet4.PrintPreview: GoTo Tiep
            End If
            If InStrRev(SoBB, "ATGT", -1, vbBinaryCompare) > 0 Then
                Sheet5.PrintPreview: GoTo Tiep
            End If
            If InStrRev(SoBB, "BT", -1, vbBinaryCompare) > 0 Then
                Sheet4.PrintPreview
            End If
        End If
Tiep:
    Next
End With
End Sub
Khi nào ưng cái bụng thì thay PrintPreview bằng PrintOut nhoé
Em nhờ bác giúp thêm code này ạ. Khi ô a53 không phải là các giá trị VC,ATGT hay BT thì cần thêm gì vào đoạn code để chạy liên tục được ạ
 
Web KT
Back
Top Bottom