Nhờ tính điểm bình quân môn học theo lớp bằng VBA (1 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

1050167

Thành viên mới
Tham gia
16/6/15
Bài viết
29
Được thích
0
Nhờ tính điểm bình quân môn học theo lớp bằng VBA
Chào các anh chị, em có file điểm muốn nhờ anh chị tính điểm bình quân theo môn và theo lớp ở sheet "TKC" và xem dùm em chỗ thống kê điểm cao nhất thấp nhất ở sheet "THONG KE" có điểm 10 thì bị sai! Cảm ơn anh chị nhiều!
 

File đính kèm

Bạn nên quy chuẩn tên môn học giữa các Sheet cho giống nhau.
Trong lúc chờ người viết VBA, bạn tham khảo công thức bên dưới nếu sử dụng excel 365 và nhập đầy đủ Sĩ số của các lớp vào Sheet TKC
Mã:
=BYCOL(FILTER('DIEM THI'!$F$5:$O$638,'DIEM THI'!$E$5:$E$638=B5),SUM)/C5

1.png
 
Bạn nên quy chuẩn tên môn học giữa các Sheet cho giống nhau.
Trong lúc chờ người viết VBA, bạn tham khảo công thức bên dưới nếu sử dụng excel 365 và nhập đầy đủ Sĩ số của các lớp vào Sheet TKC
Mã:
=BYCOL(FILTER('DIEM THI'!$F$5:$O$638,'DIEM THI'!$E$5:$E$638=B5),SUM)/C5
Thêm cái REDUCE là kết quả luôn cả bảng đó bác
 
Bạn nên quy chuẩn tên môn học giữa các Sheet cho giống nhau.
Trong lúc chờ người viết VBA, bạn tham khảo công thức bên dưới nếu sử dụng excel 365 và nhập đầy đủ Sĩ số của các lớp vào Sheet TKC
Mã:
=BYCOL(FILTER('DIEM THI'!$F$5:$O$638,'DIEM THI'!$E$5:$E$638=B5),SUM)/C5

View attachment 308834
Xin chân thành cảm ơn bạn nhiều!
 
Thêm cái REDUCE là kết quả luôn cả bảng đó bác
Mình chưa sử dụng được REDUCE trong trường hợp này, nhưng có thể sử dụng MAKEARRAY như bên dưới, bạn có thể viết công thức để mình học được không?

Xin chân thành cảm ơn bạn nhiều!
Bạn có thể sử dụng công thức này để nó đổ ra mảng kết quả, không phải copy công thức nữa
Mã:
=LET(lop,B5:B21,
     ss,C5:C21,
     diem,'DIEM THI'!$F$5:$O$638,
     lopct,'DIEM THI'!$E$5:$E$638,
     MAKEARRAY(ROWS(lop),
               COLUMNS(diem),
               LAMBDA(r,c,
                      SUM(FILTER(INDEX(diem,0,c),lopct=INDEX(lop,r)))/INDEX(ss,r))))

Hoặc nếu bạn vẫn muốn dùng VBA thì xem code trong Module2 ở file đính kèm
 

File đính kèm

Lần chỉnh sửa cuối:
Mình chưa sử dụng được REDUCE trong trường hợp này, nhưng có thể sử dụng MAKEARRAY như bên dưới, bạn có thể viết công thức để mình học được không?
đây bác: =DROP(REDUCE(0,C5:C21,LAMBDA(s,r,VSTACK(s,BYCOL(FILTER('DIEM THI'!$F$5:$O$638,'DIEM THI'!$E$5:$E$638=@+B21:r),SUM)/r))),1)
Đó là theo số lượng sĩ số cố định, còn mình nghĩ phải tính theo thực tế thì dùng AVERAGE thôi.
Makearray của bạn cũng sửa bỏ filter đi được:
=LET(lop,B5:B21,ss,C5:C21,diem,'DIEM THI'!$F$5:$O$638,lopct,'DIEM THI'!$E$5:$E$638,MAKEARRAY(ROWS(lop),COLUMNS(diem),LAMBDA(r,c,
SUM(INDEX(diem,,c)*((lopct=INDEX(lop,r))/INDEX(ss,r))))))
Hoặc:
=LET(lop,B5:B21,ss,C5:C21,diem,'DIEM THI'!$F$5:$O$638,lopct,'DIEM THI'!$E$5:$E$638,MAKEARRAY(ROWS(lop),COLUMNS(diem),LAMBDA(r,c,
AVERAGE(FILTER(INDEX(diem,,c),lopct=INDEX(lop,r))))))
 
Web KT

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

Back
Top Bottom