Giúp mình giải quyết bài toán dạng thống kê ! (1 người xem)

Liên hệ QC

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

ngocdn88

Thành viên mới
Tham gia
5/1/11
Bài viết
33
Được thích
3
Chào ace GPE, nhờ ace giúp đỡ mình bài toán dạng như thống kê. Mình đang phải đánh giá một vài chỉ tiêu cho số liệu.
Yêu cầu bài toán mình có ghi trong file Excel đính kèm luôn. Mong được sự giúp đỡ của ace GPE . Cám ơn mọi người nhiều nhiều! }}}}}
 

File đính kèm

Lần chỉnh sửa cuối:
Đọc file của bạn không có hiểu gì hết, các bài không trả lời được trên GPE hoặc là quá khó (cái này chắc vô cùng hiếm) hoặc là không ai hiểu bạn muốn gì.

Vậy bạn xem lại cách diễn giải yêu cầu xem sao. Ít số liệu hơn, và cụ thể chính xác ví dụ.

Chúc bạn sớm có giải pháp
 
Upvote 0
Đọc file của bạn không có hiểu gì hết, các bài không trả lời được trên GPE hoặc là quá khó (cái này chắc vô cùng hiếm) hoặc là không ai hiểu bạn muốn gì.

Vậy bạn xem lại cách diễn giải yêu cầu xem sao. Ít số liệu hơn, và cụ thể chính xác ví dụ.

Chúc bạn sớm có giải pháp

Cảm ơn bạn, mình đã sửa lại cách diễn giải ( không biết đã dễ hiểu hơn chưa), mình đính kèm đầu bài #1 đó, trong đó mình có giải thích cách tính, bạn download về xem giúp mình nhé! Cám ơn bạn nhiều !
 
Upvote 0
Cảm ơn bạn, mình đã sửa lại cách diễn giải ( không biết đã dễ hiểu hơn chưa), mình đính kèm đầu bài #1 đó, trong đó mình có giải thích cách tính, bạn download về xem giúp mình nhé! Cám ơn bạn nhiều !
Tại sao dòng 14 và 15 số âm liên tiếp sao không tính, nhưng dòng 29 và 30 số dương lại tính??? Nhức đầu.

Nếu nói rõ ràng thì bài này chắc mình mần........được nhưng không chắc trúng
 
Lần chỉnh sửa cuối:
Upvote 0
Sau đây là kết quả mà theo mình nghĩ

Với những lưu í sau:

(*) Giá trị tại 2 ô [b11] & [B541] ta thấy là 0.0; Nhưng thực ra chúng là những trị < 0. Nhưng do bạn định dạng cả cột với 1 số lẽ thập fân nên cũng làm tốn không ít công sức của mình!

(*) Trị trung bình ở mục 2 có được từ kết quả trả về của hàm Excel;
Còn trị trả về ở mục cuối là kết quả của fép chia

(*) Nếu bạn là dân kỹ thuật, thì mình khuyên bạn nên tập có tính cẩn thận hơn;
Việc này không những có lợi cho cộng đồng mà cả cho ban!
 

File đính kèm

Upvote 0
Bài này mình giải thế này, không hiểu sao kết quả ra khác của bác Sa chút tẹo
PHP:
Sub LUXUBU()
Dim sarr(), i, SoLan, TB, Nho, Lon, AmNhat, TBSLXH, kq(1 To 5, 1 To 1)
sarr = Range([B1], [B65536].End(3).Offset(1)).Value
For i = 2 To UBound(sarr) - 1
    If sarr(i, 1) < 0 Then
        If sarr(i + 1, 1) < 0 Then
            If sarr(i - 1, 1) >= 0 Then
                SoLan = SoLan + 1
            End If
        End If
        If sarr(i + 1, 1) < 0 Or sarr(i - 1, 1) < 0 Then
            TB = sarr(i, 1) + TB
            TBSLXH = TBSLXH + 1
            Nho = Nho + 1
            If sarr(i, 1) < AmNhat Then AmNhat = sarr(i, 1)
        End If
        If Nho > Lon Then Lon = Nho
    Else
        Nho = 0
    End If
Next
kq(1, 1) = SoLan: kq(2, 1) = TB / SoLan: kq(3, 1) = Lon
kq(4, 1) = AmNhat: kq(5, 1) = TBSLXH / SoLan
[G12:G16] = kq
End Sub
 
Upvote 0
Rất cảm ơn bạn @SA_DQ đã nhắc nhở mình, quả thật mình đã cẩu thả,( cũng vì mình đang có nhiều việc quá, mong bạn thông cảm) Mình rất xin lỗi vì sự cẩu thả này. Mình xin ghi nhớ lời nhắc nhở của bạn! Cám ơn bạn lần nữa vì đã bỏ công sức giúp mình ! Rất cám ơn!
 
Upvote 0
Bài này mình giải thế này, không hiểu sao kết quả ra khác của bác Sa chút tẹo

Chú mày tính trung bình của 1 tổng; Còn iêu cầu fải như mình tính:

Tổng các trung bình!

/(hà, Khà, khà,. . . .
 
Upvote 0
Bài này mình giải thế này, không hiểu sao kết quả ra khác của bác Sa chút tẹo
PHP:
Sub LUXUBU()
Dim sarr(), i, SoLan, TB, Nho, Lon, AmNhat, TBSLXH, kq(1 To 5, 1 To 1)
sarr = Range([B1], [B65536].End(3).Offset(1)).Value
For i = 2 To UBound(sarr) - 1
    If sarr(i, 1) < 0 Then
        If sarr(i + 1, 1) < 0 Then
            If sarr(i - 1, 1) >= 0 Then
                SoLan = SoLan + 1
            End If
        End If
        If sarr(i + 1, 1) < 0 Or sarr(i - 1, 1) < 0 Then
            TB = sarr(i, 1) + TB
            TBSLXH = TBSLXH + 1
            Nho = Nho + 1
            If sarr(i, 1) < AmNhat Then AmNhat = sarr(i, 1)
        End If
        If Nho > Lon Then Lon = Nho
    Else
        Nho = 0
    End If
Next
kq(1, 1) = SoLan: kq(2, 1) = TB / SoLan: kq(3, 1) = Lon
kq(4, 1) = AmNhat: kq(5, 1) = TBSLXH / SoLan
[G12:G16] = kq
End Sub

Đúng là phải tính Tổng các trung bình đó bạn à, bạn hoàn thiện lại chỗ này được ko :) ?
 
Upvote 0
Với những lưu í sau:

(*) Giá trị tại 2 ô [b11] & [B541] ta thấy là 0.0; Nhưng thực ra chúng là những trị < 0. Nhưng do bạn định dạng cả cột với 1 số lẽ thập fân nên cũng làm tốn không ít công sức của mình!

(*) Trị trung bình ở mục 2 có được từ kết quả trả về của hàm Excel;
Còn trị trả về ở mục cuối là kết quả của fép chia

(*) Nếu bạn là dân kỹ thuật, thì mình khuyên bạn nên tập có tính cẩn thận hơn;
Việc này không những có lợi cho cộng đồng mà cả cho ban!

Bạn SA_DQ ơi, Bạn xem lại giúp mình 1 chút ở chỗ, Ví dụ như ô B1 B2 mình chuyển sang số âm, thì VBA lại ko nhận diện được chuỗi này bạn à.

Ngôn ngữ và cách viết của các bạn cũng rất khác nhau, mình cũng mong có thể đọc và hiểu được, tích lũy kinh nghiệm! Cám ơn bạn nhiều nhé!
 
Upvote 0
Bạn SA_DQ ơi, Bạn xem lại giúp mình 1 chút ở chỗ, Ví dụ như ô B1 B2 mình chuyển sang số âm, thì VBA lại ko nhận diện được chuỗi này bạn à.

Thì tạm thời bạn thêm 2 dòng trống lên đầu & tương vô [B1] chuỗi gì đó, như "GPE.COM"
Còn [B2] thì tương vô con 0 tạm đi;

Lúc hứng sẽ tiếp tục viết cho mọi trường hợp.

(*) Ngôn ngữ thì đều là VBA; Giải thuật thì xài Array sẽ nhanh hơn nhiều! Nhưng không xài Array thì dễ đọc, dễ hiểu & tự bảo trì về sau,. . . .
 
Upvote 0
Thì tạm thời bạn thêm 2 dòng trống lên đầu & tương vô [B1] chuỗi gì đó, như "GPE.COM"
Còn [B2] thì tương vô con 0 tạm đi;

Lúc hứng sẽ tiếp tục viết cho mọi trường hợp.

(*) Ngôn ngữ thì đều là VBA; Giải thuật thì xài Array sẽ nhanh hơn nhiều! Nhưng không xài Array thì dễ đọc, dễ hiểu & tự bảo trì về sau,. . . .

Bác ơi, bác giúp em chỉnh sửa 1 chút cách tính nhé, có thay đổi 1 chút, bác xem giúp em nhé! Cám ơn bác nhiều nhiều!
 

File đính kèm

Upvote 0
Bạn Copy dòng lệnh này:
PHP:
TTrBinh = TTrBinh + WF.Sum(.Offset(0)) / WF.Sum(.Offset(, -1))

Thay cho 2 dòng lệnh:
Mã:
[B]TTrBinh = TTrBinh + WF.Average(.Offset(0)) [/B]
 
Upvote 0
Bác ơi, bác giúp em chỉnh sửa 1 chút cách tính nhé, có thay đổi 1 chút, bác xem giúp em nhé! Cám ơn bác nhiều nhiều!

Bạn thử code này nhé. Bài này dùng mảng nên hơi nhức óc chút, nhưng chơi được hết.
PHP:
Sub Thongke()
Dim Sarr(), I, N, TB
Dim Am, Duong, AmDaiNhat
Dim SLXH, Annhat, AmKQ, TongSLXH
Sarr = Range([A1], [A65536].End(3).Offset(1)).Resize(, 2).Value
Do
    Do
        I = I + 1
        If Sarr(I, 2) < 0 Then
            Am = Am + Sarr(I, 2): Duong = Duong + Sarr(I, 1)
            If Sarr(I, 2) < Annhat Then Annhat = Sarr(I, 2)
            N = N + 1
        Else
            If N > 1 Then
                TB = TB + (Am / Duong): SLXH = SLXH + 1
                If Annhat < AmKQ Then AmKQ = Annhat
                If N > AmDaiNhat Then AmDaiNhat = N
                TongSLXH = TongSLXH + N
            End If
            N = 0: Am = 0: Duong = 0: Exit Do
        End If
    Loop
Loop Until I = UBound(Sarr)
[I11] = SLXH: [I12] = TB: [I13] = AmDaiNhat
[I14] = AmKQ: [I15] = TongSLXH / SLXH
End Sub
 
Upvote 0
Bạn thử code này nhé. Bài này dùng mảng nên hơi nhức óc chút, nhưng chơi được hết.
PHP:
Sub Thongke()
Dim Sarr(), I, N, TB
Dim Am, Duong, AmDaiNhat
Dim SLXH, Annhat, AmKQ, TongSLXH
Sarr = Range([A1], [A65536].End(3).Offset(1)).Resize(, 2).Value
Do
    Do
        I = I + 1
        If Sarr(I, 2) < 0 Then
            Am = Am + Sarr(I, 2): Duong = Duong + Sarr(I, 1)
            If Sarr(I, 2) < Annhat Then Annhat = Sarr(I, 2)
            N = N + 1
        Else
            If N > 1 Then
                TB = TB + (Am / Duong): SLXH = SLXH + 1
                If Annhat < AmKQ Then AmKQ = Annhat
                If N > AmDaiNhat Then AmDaiNhat = N
                TongSLXH = TongSLXH + N
            End If
            N = 0: Am = 0: Duong = 0: Exit Do
        End If
    Loop
Loop Until I = UBound(Sarr)
[I11] = SLXH: [I12] = TB: [I13] = AmDaiNhat
[I14] = AmKQ: [I15] = TongSLXH / SLXH
End Sub

Cám ơn bạn rất nhiều vì đã dành thời gian giúp đỡ! bài bạn viết chạy tốt lắm. Nhân tiện bạn giải thích giúp mình 1 chút về ngôn ngữ thuật toán nhé !, cám ơn bạn lần nữa ! }}}}}
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom