Viết Code tính giá trị trung bình có yếu tố phụ thuộc

Liên hệ QC

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