Tính số mẫu theo ngày tháng trong 1 chuỗi ký tự (1 người xem)

  • Thread starter Thread starter LYSM
  • Ngày gửi Ngày gửi
Liên hệ QC

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

LYSM

Thành viên thường trực
Tham gia
16/3/11
Bài viết
290
Được thích
26
Em chào các anh chị! Em đang có 1 vấn đề cần các anh chị giúp đỡ. Em có dữ liệu là 1 chuỗi ký tự trong đó có số mẫu và ngày tháng lấy mẫu. Bây giờ phải tính tổng số mẫu trong 1 cell này thỏa mãn điều kiện ngày lấy mẫu < 1 ngày cho trước thì cộng số mẫu tương ứng lại. Em gửi file đính kèm nhờ các thầy cô và anh chị giúp đỡ. Dùng hàm hoặc VBA cũng được ạ. Em cảm ơn nhiều!

P/s: Vì do đặc thù riêng nên cell này không thể tách các dữ liệu ra nhiều dòng và cột được ạ, file đính kèm bác hungpecc1 đã viết giúp code nhưng chỉ tính được khi số mẫu <10 và trong dòng không được có thêm các ký tự số. Vì em muốn làm bằng VBA nên chuyển sang đây. Nhờ mod xóa giúp bài theo đường link: http://www.giaiphapexcel.com/forum/...h-tổng-số-theo-ngày-tháng-trong-1-chuỗi-ký-tự ạ (file đưa lên theard này đầy đủ hơn)
 

File đính kèm

Lần chỉnh sửa cuối:
Lần chỉnh sửa cuối:
Upvote 0
Em chào các anh chị! Em đang có 1 vấn đề cần các anh chị giúp đỡ. Em có dữ liệu là 1 chuỗi ký tự trong đó có số mẫu và ngày tháng lấy mẫu. Bây giờ phải tính tổng số mẫu trong 1 cell này thỏa mãn điều kiện ngày lấy mẫu < 1 ngày cho trước thì cộng số mẫu tương ứng lại. Em gửi file đính kèm nhờ các thầy cô và anh chị giúp đỡ. Dùng hàm hoặc VBA cũng được ạ. Em cảm ơn nhiều!

P/s: Vì do đặc thù riêng nên cell này không thể tách các dữ liệu ra nhiều dòng và cột được ạ, file đính kèm bác hungpecc1 đã viết giúp code nhưng chỉ tính được khi số mẫu <10 và trong dòng không được có thêm các ký tự số. Vì em muốn làm bằng VBA nên chuyển sang đây. Nhờ mod xóa giúp bài theo đường link: http://www.giaiphapexcel.com/forum/...h-tổng-số-theo-ngày-tháng-trong-1-chuỗi-ký-tự ạ (file đưa lên theard này đầy đủ hơn)
Bạn thử dùng code trong file này xem sao
Thân
 

File đính kèm

Upvote 0
Bạn thử dùng code trong file này xem sao
Thân
Kết quả này thì đúng rồi bác ạ, nhưng bây giờ em có tương ứng với mỗi ô cột A có một mốc thời gian riêng thì làm thế nào ạ? cụ thế là mỗi ô cột A gắn với 1 ngày sản xuất, mốc thời gian trên dòng 2 là sau 7 ngày, 15 ngày, 1 tháng tính từ ngày sản xuất của các ô cột A. Bác xem file đính kèm giúp em ạ. Em cảm ơn!
 

File đính kèm

Upvote 0
Kết quả này thì đúng rồi bác ạ, nhưng bây giờ em có tương ứng với mỗi ô cột A có một mốc thời gian riêng thì làm thế nào ạ? cụ thế là mỗi ô cột A gắn với 1 ngày sản xuất, mốc thời gian trên dòng 2 là sau 7 ngày, 15 ngày, 1 tháng tính từ ngày sản xuất của các ô cột A. Bác xem file đính kèm giúp em ạ. Em cảm ơn!
Sửa code của Bác Cò lại một chút như vầy:
PHP:
Public Sub Tinh()
    Dim Vung, J, Tach, I, Ngay, Lay, Mg, A, B, C, layA, layB, layC, Tem As Long
    Vung = Range([A3], [B50000].End(xlUp))
    ReDim Mg(1 To UBound(Vung), 1 To 3)
        For J = 1 To UBound(Vung)
                Tem = Vung(J, 2)
                A = Tem + 7: B = Tem + 15: C = DateSerial(Year(Tem), Month(Tem + 1), Day(Tem))
            Tach = Split(Vung(J, 1))
                For I = 0 To UBound(Tach)
                    If Right(Tach(I), 1) = ":" Then
                        Ngay = VBA.CDate(Tach(I + 1)): Lay = Val(Tach(I + 3))
                        If Ngay < A Then
                            layA = layA + Lay
                        ElseIf Ngay >= A And Ngay < B Then
                            layB = layB + Lay
                        ElseIf Ngay >= B And Ngay < C Then
                            layC = layC + Lay
                        End If
                    End If
                Next I
            Mg(J, 1) = layA: Mg(J, 2) = layB: Mg(J, 3) = layC
            layA = 0: layB = 0: layC = 0: Lay = 0
        Next J
        [C3].Resize(UBound(Vung), 3) = Mg
End Sub
Ngày SX cột B là 31/01/2014 thì 1 tháng sau là này nào "Chời"?
 
Upvote 0
Sửa code của Bác Cò lại một chút như vầy:
PHP:
Public Sub Tinh()
    Dim Vung, J, Tach, I, Ngay, Lay, Mg, A, B, C, layA, layB, layC, Tem As Long
    Vung = Range([A3], [B50000].End(xlUp))
    ReDim Mg(1 To UBound(Vung), 1 To 3)
        For J = 1 To UBound(Vung)
                Tem = Vung(J, 2)
                A = Tem + 7: B = Tem + 15: C = DateSerial(Year(Tem), Month(Tem + 1), Day(Tem))
            Tach = Split(Vung(J, 1))
                For I = 0 To UBound(Tach)
                    If Right(Tach(I), 1) = ":" Then
                        Ngay = VBA.CDate(Tach(I + 1)): Lay = Val(Tach(I + 3))
                        If Ngay < A Then
                            layA = layA + Lay
                        ElseIf Ngay >= A And Ngay < B Then
                            layB = layB + Lay
                        ElseIf Ngay >= B And Ngay < C Then
                            layC = layC + Lay
                        End If
                    End If
                Next I
            Mg(J, 1) = layA: Mg(J, 2) = layB: Mg(J, 3) = layC
            layA = 0: layB = 0: layC = 0: Lay = 0
        Next J
        [C3].Resize(UBound(Vung), 3) = Mg
End Sub
Ngày SX cột B là 31/01/2014 thì 1 tháng sau là này nào "Chời"?
Sẽ là ngày 28/2 thầy ạ, ngày 28,29,30,31/1 đều cho hết vào ngày 28/2 thầy ạ, file hiện tại em dùng hàm dateadd để giải quyết trường hợp này ạ
 
Upvote 0

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

Back
Top Bottom