Viết Code tính giá trị trung bình có yếu tố phụ thuộc (1 người xem)

Liên hệ QC

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

huongduongxanh2007

Thành viên mới
Tham gia
9/6/07
Bài viết
22
Được thích
7
Các ACE cho em hỏi làm sao viết code sau:

Nếu cell nào ở cột A lớn hơn 0 thì giữ nguyên giá trị đó.
Nếu cell nào ở cột A bằng 0 thì lấy giá trị trung bình ở hai cells liền kề, cận trên và cận dưới. Trường hợp có nhiều cells có giá trị bằng 0 liên tiếp thì các ô đó đều lấy trung bình của cận trên và cận dưới các ô đó. Kết quả như ô B bên dưới (nhưng viết code cho trường hợp nhiều cells).

9=(5+13)/2
10=(2+18)/2

A B
1 1
2 2
5 5
5 5
0 9
13 13
2 2
0 10
0 10
0 10
0 10
18 18
 
Lần chỉnh sửa cuối:
Các ACE cho em hỏi làm sao viết code sau:

Nếu cell nào ở cột A lớn hơn 0 thì giữ nguyên giá trị đó.
Nếu cell nào ở cột A bằng 0 thì lấy giá trị trung bình ở hai cells liền kề, cận trên và cận dưới. Trường hợp có nhiều cells có giá trị bằng 0 liên tiếp thì các ô đó đều lấy trung bình của cận trên và cận dưới các ô đó. Kết quả như ô B bên dưới (nhưng viết code cho trường hợp nhiều cells).

9=(5+13)/2
10=(2+18)/2

A B
1 1
2 2
5 5
5 5
0 9
13 13
2 2
0 10
0 10
0 10
0 10
18 18
Thử cái này xem sao:
PHP:
Sub Test()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim Rng As Range
With Range([A2], [A65536].End(xlUp))
    .Offset(, 1).Value = .Value
    Range([A1], [B65536].End(xlUp)).AutoFilter 2, 0
    On Error GoTo Quit
    For Each Rng In .Offset(, 1).SpecialCells(12).Areas
        Rng.Value = Application.WorksheetFunction.Sum(Rng(1).Offset(-1), Rng(Rng.Rows.Count).Offset(1)) / 2
    Next
End With
Quit:
ActiveSheet.AutoFilterMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Chú ý:
- Dữ liệu bắt đầu từ A2
- Theo mô tả của bạn thì dòng đầu tiên và dòng cuối cùng của dữ liệu phải lớn hơn 0.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom