Hỏi về tính trung bình dùng VBA (3 người xem)

Liên hệ QC

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

yeuhanhnhieu

Thành viên mới
Tham gia
22/1/16
Bài viết
1
Được thích
0
Các cao thủ giải giúp em bài này với ạ:
Em có 1 chuỗi số liệu a1 đến a24. Em cần tính chuỗi b, trong đó:
Giá trị b1= trung bình của 4 giá trị từ a1 đến a4
Giá trị b2 = trung bình của 4 giá trị từ a5 đến a8
Giá trị b3 = trung bình của 4 giá trị từ a9 đến a13
Cứ như thế, đến hết bảng số liệu

Bộ dữ liệu của em nhiều lắm, nên em xác định dùng VBA nhưng mới bập bẹ đọc được một ít phần này. Nhờ các cao thủ ra tay giúp em với !$@!!

Em xin phép gửi tệp Excel đính kèm mà em tính thủ công để các bác dễ hình dung.

Em cảm ơn cả nhà!
 

File đính kèm

Macro của bạn theo file đây.
/(/hững mong là khỏi gởi file lên!
PHP:
Option Explicit'
Sub TinhTrungBinh()'
 Dim J As Long, Rws As Long
 Dim WF As Object

 Rws = [B2].CurrentRegion.Rows.Count
 Range("C2:C" & Rws).ClearContents
 Set WF = Application.WorksheetFunction
 For J = 2 To Rws Step 4
    Cells(Rws, 3).End(xlUp).Offset(1).Value = WF.Average(Cells(J, 2).Resize(4))
 Next J
 Randomize
 [a1].Resize(, 3).Interior.ColorIndex = 34 + 9 * Rnd() \ 1'
End Sub'
 
Lỡ nhóm cuói cùng ít hơn 4 thì sao?
 
Mã:
 [COLOR=#008000]' sub lấy trị trung bình từng khoảng N dòng[/COLOR]
Sub tt()
Const RANGESIZE = 4 [COLOR=#008000]' số dòng mỗi nhóm cần lấy trung bình[/COLOR]
Dim sh As Worksheet, rg1 As Range, rg2 As Range
Set sh = Worksheets("sheet1") ' tên sheet 
Set rg1 = sh.Range("A1").Resize(RANGESIZE) [COLOR=#008000]' A1 là ô bắt đầu lấy nhóm[/COLOR]
Set rg2 = sh.Range("B1") [COLOR=#008000]' B1 là ô bắt đầu ghi kết quả[/COLOR]
Do While Application.CountA(rg1) [COLOR=#008000]' khi cả nhóm không có dữ liệu thì hết[/COLOR]
   rg2.Value = Application.Average(rg1)
   Set rg1 = rg1.Offset(RANGESIZE)
   Set rg2 = rg2.Offset(1)
Loop
Set sh = Nothing
Set rg1 = Nothing
Set rg2 = Nothing
End Sub
 
Lỡ nhóm cuói cùng ít hơn 4 thì sao?
Trong file của tác giả bài đăng thì:
Tại [C7] đang có công thức: =AVERAGE(B22:B25) & trị cho ra của nó là -210.985..

Nếu ta xóa đi trị tại [B25] thì kết quả tại [C7] sẽ là 208.119
Chắc đây là kết quả mà tác giả mong muốn!
 
Web KT

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

Back
Top Bottom