thao nguyen01
Thành viên thường trực
- Tham gia
- 8/12/19
- Bài viết
- 241
- Được thích
- 30
Tôi thấy bạn dùng công thức được rồi sao lại đòi code làm gì?
Hy vọng đúng như yêu cầu.
Từ D đến L không tới 10 món. Đít chi vậy?
' code này dò theo chỉ số mảng trực tiếp, ưu việt hơn đít
dongCuoi = ' ... code tính dòng cuối ở đây
MonHoc = Range("C3:L3").Value ' danh sách môn học, ô đàu tiên chỉ để sync với bảng điểm
BangDiem = Range("C4:L" & dongCuoi).Value ' bảng điểm, với cột đầu là tên lớp chuyên
numDong = UBound(BangDiem, 1)
numCot = UBound(BangDiem, 2)
Redim a(1 To numDong, 1 To 1)
For i = 1 To numDong
n = 0 ' số môn
tong = 0 ' tổng điểm
For j = 2 To numCot
If Not IsEmpty(BangDiem(i, j)) Then
heSo = IIF(BangDiem(i, 1) = MonHoc(1, j), 2, 1) ' hệ số cho môn học
n = n + 1 * heSo
tong = tong + BangDiem(i, j) * heSo
End If
Next j
If n <> 0 Then a(i, 1) = tong / n ' trung bình
Next i
' ghi a ra sheet ở đây
Bài naỳ chỉ cần đếm số môn của HS, lúc đếm thì so nó với lớp chuyên của HS, chả có lý do gì liên quan đít với điếc:
Mã:' code này dò theo chỉ số mảng trực tiếp, ưu việt hơn đít dongCuoi = ' ... code tính dòng cuối ở đây MonHoc = Range("C3:L3").Value ' danh sách môn học, ô đàu tiên chỉ để sync với bảng điểm BangDiem = Range("C4:L" & dongCuoi).Value ' bảng điểm, với cột đầu là tên lớp chuyên numDong = UBound(BangDiem, 1) numCot = UBound(BangDiem, 2) Redim a(1 To numDong, 1 To 1) For i = 1 To numDong n = 0 ' số môn tong = 0 ' tổng điểm For j = 2 To numCot If Not IsEmpty(BangDiem(i, j)) Then heSo = IIF(BangDiem(i, 1) = MonHoc(1, j), 2, 1) ' hệ số cho môn học n = n + 1 * heSo tong = tong + BangDiem(i, j) * heSo End If Next j If n <> 0 Then a(i, 1) = tong / n ' trung bình Next i ' ghi a ra sheet ở đây