Giúp chuyển công thức sang macro (2 người xem)

Liên hệ QC

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

Tìm lại file của chúng ta đã xử lý cũng gần 10'

(1) Để không tính điểm trung bình cả năm cho những em chưa có điểm TB học kỳ kỳ I thì chúng ta thay dòng lệnh số 9 #58 bằng dòng lệnh

PHP:
If jJ = 2 And Cells(Clls.Row, "S").Value <> "" Then

& xin lỗi bạn, do mình không rành lắm, nên mắng oan bạn!

(2) Thực ra macro cũng gọi hàm để tính mà thôi; Nhưng mình nói vậy để bạn đề fòng trường hợp có người nào đó sửa điểm 1 vài em học sinh, nhưng mà bạn chưa cho chạy lại macro thì kết quả sẽ không fản ảnh các điểm của những em được sửa đó.
(Tất nhiên hàm có thể cập nhật, nếu đang ở chế độ tính toán tự động)

Thân ái! --=0
 
Lần chỉnh sửa cuối:
Cảm ơn bạn nhiều.
(1) Bạn có thể giúp mình code mà khi con trỏ ở dòng nào thì nền dòng đó thay đổi màu nền được không bạn.
(2) Các bạn giúp chuyển công thức xếp loại này sang macro dùm mình với xin cảm ơn các bạn nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
các bác giúp chuyển công thức ở câu hỏi 2 với #63
 
Lần chỉnh sửa cuối:
Hàm tự tạo đây, xài thử trước đi

các bác giúp chuyển công thức ở câu hỏi 2 với #63

Nếu ưng í thì bạn hay 1 ai đó sẽ viết cho bạn macro gọi hàm này & gán danh hiệu cho học sinh của bạn.
PHP:
Option Explicit
Function XepLoaiHS(Rng As Range)
 Dim Clls As Range
 Dim Gioi As Byte, Kha As Byte, TrB As Byte, Yeu As Byte, Kem As Byte
 Dim Col As Byte, Tg As Byte
 
 Col = Rng.Count
 If Rng.Cells(, Col).Value = "" Then
   XepLoaiHS = "":                                       Exit Function
 End If
 For Each Clls In Rng
   With Clls
      If .Value <> "" Then
         Tg = Tg + 1
         Select Case .Value
         Case "G"
            Gioi = Gioi + 1
         Case "K":                                       Kha = Kha + 1
         Case "Tb":                                      TrB = TrB + 1
         Case "Y":                                       Yeu = Yeu + 1
         Case "Kém":                                     Kem = Kem + 1
         End Select
      End If
   End With
 Next Clls
 If (Kem + Yeu = 0) And TrB / Tg <= 0.25 And Gioi / Tg >= 0.5 Then
   XepLoaiHS = "G"
 ElseIf (Kem = 0 And Yeu / Tg < 0.25 And (Gioi + Kha) / Tg >= 0.5) Or _
   (Kem / Tg <= 0.25 And (Gioi + Kha) / Tg >= 0.7 And Gioi / Tg = 0.5) Then
   XepLoaiHS = "K"
 ElseIf (Gioi + Kha) / Tg >= 0.5 Or Kem / Tg <= 0.25 Or (Yeu + Kem) / Tg <= 0.5 Then '<=|'
   XepLoaiHS = "TB"
 ElseIf Kem / Tg > 0.5 Then
   XepLoaiHS = "Kém"
 Else
   XepLoaiHS = "Y"
 End If
End Function

(Bạn kiểm theo file nha)
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn xem lại giúp mình một tí vì có trường hợp sai đó là nếu có 6 cột điểm mà 4 cột xếp loại yếu(y) hai cột cỏn lại trung bình trở lên thì xếp loại yếu chứ bạn. Bạn xem lại công thức của mình cái nhen.
Cảm ơn bạn nhiều
nếu ưng í thì bạn hay 1 ai đó sẽ viết cho bạn macro gọi hàm này & gán danh hiệu cho học sinh của bạn.
PHP:
option explicit
function xeploaihs(rng as range)
dim clls as range
dim gioi as byte, kha as byte, trb as byte, yeu as byte, kem as byte
dim col as byte, tg as byte

col = rng.count
if rng.cells(, col).value = "" then
xeploaihs = "": Exit function
end if
for each clls in rng
with clls
if .value <> "" then
tg = tg + 1
select case .value
case "g"
gioi = gioi + 1
case "k": Kha = kha + 1
case "tb": Trb = trb + 1
case "y": Yeu = yeu + 1
case "kém": Kem = kem + 1
end select
end if
end with
next clls
if (kem + yeu = 0) and trb / tg <= 0.25 and gioi / tg >= 0.5 then
xeploaihs = "g"
elseif (kem = 0 and yeu / tg < 0.25 and (gioi + kha) / tg >= 0.5) or _
(kem / tg <= 0.25 and (gioi + kha) / tg >= 0.7 and gioi / tg = 0.5) then
xeploaihs = "k"
elseif (gioi + kha) / tg >= 0.5 or kem / tg <= 0.25 or (yeu + kem) / tg <= 0.5 then
xeploaihs = "tb"
elseif kem / tg > 0.5 then
xeploaihs = "kém"
else
xeploaihs = "y"
end if
end function

(bạn kiểm theo file nha)
 
Thật ra mình cũng chưa hiểu hết chổ này:

IF(OR(AND(COUNTIF(E13:T13,"G")+COUNTIF(E13:T13,"K")>=0.5*COUNTA(E13:T13)),AND(COUNTIF(E13:T13,"Kem")<=0.25*COUNTA(E13:T13),COUNTIF(E13:T13,"Y")+COUNTIF(E13:T13,"Kem")<=0.5*COUNTA(E13:T13))),"Tb"

Giờ thì mình vừa sửa câu lệnh
Mã:
ElseIf Gioi + Kha) / Tg >= 0.5 Or Kem / Tg <= 0.25 Or (Yeu + Kem) / Tg <= 0.5 Then

Thành ra:
PHP:
ElseIf ((Gioi + Kha) / Tg >= 0.5 And Kem / Tg <= 0.25) Or (Yeu + Kem) / Tg <= 0.5 Then

Thì tạm được cho trường hợp đó, nhưng chưa biết các trường hợp khác ra sao

Rất mong bạn sửa lại trong hàm tự tạo dùm & xét xem còn trường hợp nào sai nữa để cùng hoàn chỉnh.

Thân ái & chúc tuần làm việc kết quả!
 
Lần chỉnh sửa cuối:
Cảm ơn bạn nhiều để mình kiểm tra lại nếu có vấn đề gì mình hỏi tiếp thật sự cảm ơn bạn rất nhiều. Bạn viết cho mình code cho cột cả năm luôn nhé cảm ơn nhiều.
IF(OR(AND(COUNTIF(E13:T13,"G")+COUNTIF(E13:T13,"K")>=0.5*COUNTA(E13:T13)),AND(COUNTIF(E13:T13,"Kem")<=0.25*COUNTA(E13:T13),COUNTIF(E13:T13,"Y")+COUNTIF(E13:T13,"Kem")<=0.5*COUNTA(E13:T13))),"Tb"

Giờ thì mình vừa sửa câu lệnh
Mã:
ElseIf Gioi + Kha) / Tg >= 0.5 Or Kem / Tg <= 0.25 Or (Yeu + Kem) / Tg <= 0.5 Then

Thành ra:
PHP:
ElseIf ((Gioi + Kha) / Tg >= 0.5 And Kem / Tg <= 0.25) Or (Yeu + Kem) / Tg <= 0.5 Then

Thì tạm được cho trường hợp đó, nhưng chưa biết các trường hợp khác ra sao

Rất mong bạn sửa lại trong hàm tự tạo dùm & xét xem còn trường hợp nào sai nữa để cùng hoàn chỉnh.

Thân ái & chúc tuần làm việc kết quả!
 
Cảm ơn bạn nhiều để mình kiểm tra lại nếu có vấn đề gì mình hỏi tiếp thật sự cảm ơn bạn rất nhiều. Bạn viết cho mình code cho cột cả năm luôn nhé cảm ơn nhiều.

Để trách sai sót như vừa rồi, bạn hãy dịch ra tiếng Việt công thức này dùm đi:

=IF(COUNTIF(AL10:AM10,"")=2,"",
IF(AND(COUNTIF(AL10:AM10,"G")>=1,COUNTIF(AL10:AM10,"Tb")=0,COUNTIF(AL10:AM10,"Y")=0,COUNTIF(AL10:AM10,"Kém")=0),"G",
IF(OR(AND(COUNTIF(AL10:AM10,"Tb")=1,COUNTIF(AL10:AM10,"G")=1),
AND(COUNTIF(AL10:AM10,"K")>=1,COUNTIF(AL10:AM10,"G")=0,COUNTIF(AL10:AM10,"Y")=0,COUNTIF(AL10:AM10,"Kém")=0)),"K",
IF(OR(AND(COUNTIF(AL10:AM10,"Tb")=1,COUNTIF(AL10:AM10,"Kém")=1),AND(COUNTIF(AL10:AM10,"Y")>=1, COUNTIF(AL10:AM10,"G")=0,COUNTIF(AL10:AM10,"K")=0,COUNTIF(AL10:AM10,"Tb")=0)),"Y",IF(AND(COUNTIF(AL10:AM10,"Kém")>=1, COUNTIF(AL10:AM10,"G")=0,COUNTIF(AL10:AM10,"K")=0,COUNTIF(AL10:AM10,"Tb")=0),"Kém","Tb")))))
 
Lần chỉnh sửa cuối:
dịch công thức
nếu tổng hai cell AL10 vầ AM10 NẾU CÓ HAI CỘT TRỐNG THÌ BỎ TRỐNG NGƯỢC LẠI THÌ TIẾN HÀNH LÀM NHƯ SAU
XẾP LOẠI GIỎI: NẾU TRONG HAI CỘT HỌC KỲ I, HỌC KỲ II CÓ TỪ 1 GIỎI (G) TRỞ LÊN KHÔNG CÓ CỘT TRUNG BÌNH(Tb), YẾU(Y), KÉM(Kém)
XẾP LOẠI KHÁ: NẾU THỎA MÃN MỘT TRONG CÁC TRƯỜNG HỢP SAU:
(1) NẾU HAI HỌC KỲ CÓ 1 TRUNG BÌNH THÌ HỌC KỲ CÒN LẠI PHẢI ĐẠT GIỎI HOẶC KHÁ
(2) CẢ HAI HỌC KỲ ĐỀU XẾP LOẠI KHÁ.
XẾP LOẠI YẾU: NẾU THỎA MÃN MỘT TRONG CÁC TRƯỜNG HỢP SAU:
(1) NẾU HAI HỌC KỲ CÓ 1 TRUNG BÌNH THÌ HỌC KỲ CÒN LẠI PHẢI XẾP LOẠI KÉM
(2) NẾU HAI HỌC KỲ CÓ 1 YẾU THÌ HỌC KỲ CÒN LẠI PHẢI LÀ KÉM HOẶC YẾU
XẾP LOẠI KÉM: KHI CẢ HAI HỌC KỲ ĐẠT LOẠI KÉM
XẾP LOẠI TRUNG BÌNH: LÀ NHỮNG ĐIỀU KIỆN CÒN LẠI

Một lần nữa xin cảm ơn bạn rất nhiều.
À nếu trong bảng điểm đó mình không chuyển cột học kỳ I bên cạnh cột Học kỳ II để tính cho cột cả năm Nếu không chuyển thì code như thế nào hả bạn. Cảm ơn bạn nhiều (Nước được bạn giúp mình hai code luôn nhen

câu hỏi 2:
Chuyển công thức xếp loại cho bảng điểm xếp loại chung sang macro mình gửi kèm tệp tin mong mọi người giúp đở cảm ơn nhiều.


Để trách sai sót như vừa rồi, bạn hãy dịch ra tiếng Việt công thức này dùm đi:

=IF(COUNTIF(AL10:AM10,"")=2,"",
IF(AND(COUNTIF(AL10:AM10,"G")>=1,COUNTIF(AL10:AM10,"Tb")=0,COUNTIF(AL10:AM10,"Y")=0,COUNTIF(AL10:AM10,"Kém")=0),"G",
IF(OR(AND(COUNTIF(AL10:AM10,"Tb")=1,COUNTIF(AL10:AM10,"G")=1),
AND(COUNTIF(AL10:AM10,"K")>=1,COUNTIF(AL10:AM10,"G")=0,COUNTIF(AL10:AM10,"Y")=0,COUNTIF(AL10:AM10,"Kém")=0)),"K",
IF(OR(AND(COUNTIF(AL10:AM10,"Tb")=1,COUNTIF(AL10:AM10,"Kém")=1),AND(COUNTIF(AL10:AM10,"Y")>=1, COUNTIF(AL10:AM10,"G")=0,COUNTIF(AL10:AM10,"K")=0,COUNTIF(AL10:AM10,"Tb")=0)),"Y",IF(AND(COUNTIF(AL10:AM10,"Kém")>=1, COUNTIF(AL10:AM10,"G")=0,COUNTIF(AL10:AM10,"K")=0,COUNTIF(AL10:AM10,"Tb")=0),"Kém","Tb")))))
 

File đính kèm

Lần chỉnh sửa cuối:
(1) Hàm xếp loại cả năm đâym xin mời:
PHP:
Option Explicit
Function XepLoaiNH(HK_1 As Range, HK_2 As Range) As String
 Const TbYK As String = "TBYKém"
 Dim HK1 As String, HK2 As String
 
 HK1 = HK_1.Value:                           HK2 = HK_2.Value
 If HK1 = "K" Then HK1 = "Kh":               If HK2 = "K" Then HK2 = HK2 & "h"
 
 If HK1 = "" And HK2 = "" Then
   Exit Function
 End If
 XepLoaiNH = "TB"
 If (HK1 = "G" And InStr(TbYK, HK2) = 0) Or (HK2 = "G" And InStr(TbYK, HK1) = 0) Then
   XepLoaiNH = "G"
 ElseIf (HK1 = "Kh" And HK2 = "Kh") Or _
   ((HK1 = "TB" And (HK2 = "G" Or HK2 = "Kh")) Or (HK2 = "TB" And (HK1 = "G" Or HK1 = "Kh"))) Then
   XepLoaiNH = "Kh"
 ElseIf ((HK1 = "TB" And HK2 = "Kém") Or (HK2 = "TB" And HK1 = "Kém")) Or _
   ((HK1 = "Y" And (HK2 = "Kém" Or HK2 = "Y")) Or (HK2 = "Y" And (HK1 = "Kém" Or HK1 = "Y"))) Then
   XepLoaiNH = "Y"
 ElseIf HK1 = "Kém" And HK2 = "Kém" Then
   XepLoaiNH = "Kém"
 End If
End Function

À nếu trong bảng điểm đó mình không chuyển cột học kỳ I bên cạnh cột Học kỳ II để tính cho cột cả năm Nếu không chuyển thì code như thế nào hả bạn

2uan trọng là cú fáp hàm thôi; Hãy thử trên file đính kém nha

(2) Macro dùng để gọi hàm tự tạo nhập loại cho HS học kì I đây (Bạn xem các địa chỉ trong macro mà thử đổi để tính cho HK2 nha.
Nếu bạn tự ên được cho xếp loại cả năm thì mình rất vui!

PHP:
Sub XepLoai()
 Dim lRw As Long, Timer_ As Double
 Dim Clls As Range
 
 Timer_ = Timer:                       Sheet1.Select
 Application.ScreenUpdating = False
 lRw = Columns("E:T").Find(What:="*", After:=[E4], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
 
 For Each Clls In Range("U5:U" & lRw)              '<=|'
   Clls.Value = XepLoaiHS(Clls.Offset(, -16).Resize(, 16))
 Next Clls
 [U1].Value = Timer - Timer_                       '<=|'
End Sub

(Thời gian tính cho hơn 500 em chưa tới 0.2 gy)
 

File đính kèm

Một lần nữa xin cảm ơn bạn rất nhiều. Mình tìm trên mạng bài của các anh chị trên diễn đàn thấy có nhiều bài rất là hay bạn có thể giải thích thêm cho mình code này được không ah.

Code:
Option Explicit
Option Base 1
Dim nDong As Long, endR As Long, k As Long
Dim iMon As Long
Dim shName As String
Dim WF As WorksheetFunction
Dim HS11, HS21, Thi1, HS12, HS22, Thi2
Const fR As Long = 5
Sub TinhDiemTN() ' Sub cua Ptm0412
Dim Arr() As Variant
Dim MonArr
Dim t As Variant
t = Timer
MonArr = Array("TOAN", "LY", "HOA", "SINH", "TIN", "VAN", "SU", "DIA", "ANH", "GDCD", "CNGHE", "GDQP")
Set WF = WorksheetFunction
With Application
.ScreenUpdating = False: .Calculation = xlCalculationManual
End With
Dim SumHS1, SumHS2, iCount1, iCount2, iCol
For iMon = 1 To UBound(MonArr)
shName = MonArr(iMon)
With Sheets(shName)
endR = .Cells(10000, 1).End(xlUp).Row
ReDim Arr(endR - fR + 1, 3)
ReDim HS11(endR - fR + 1, 6)
ReDim HS21(endR - fR + 1, 5)
ReDim HS12(endR - fR + 1, 6)
ReDim HS22(endR - fR + 1, 5)
ReDim Thi1(endR - fR + 1, 1)
ReDim Thi2(endR - fR + 1, 1)

HS11 = .Range("F" & fR & ":K" & endR)
HS21 = .Range("L" & fR & ":P" & endR)
HS12 = .Range("R" & fR & ":W" & endR)
HS22 = .Range("X" & fR & ":AB" & endR)
Thi1 = .Range("Q" & fR & ":Q" & endR)
Thi2 = .Range("AC" & fR & ":AC" & endR)

For k = 1 To endR - fR + 1

'diem HK1'
For iCol = 1 To 6
SumHS1 = SumHS1 + HS11(k, iCol)
iCount1 = iCount1 + IIf(HS11(k, iCol) > 0, 1, 0)
Next

For iCol = 1 To 5
SumHS2 = SumHS2 + HS21(k, iCol) * 2
iCount2 = iCount2 + IIf(HS21(k, iCol) > 0, 2, 0)
Next
If SumHS1 = 0 Or SumHS2 = 0 Then GoTo bien

Arr(k, 1) = (SumHS1 + SumHS2 + Thi1(k, 1) * 3) / (iCount1 + iCount2 + 3)
'diem HK2'
SumHS1 = 0: SumHS2 = 0: iCount1 = 0: iCount2 = 0
For iCol = 1 To 6
SumHS1 = SumHS1 + HS12(k, iCol)
iCount1 = iCount1 + IIf(HS12(k, iCol) > 0, 1, 0)
Next

For iCol = 1 To 5
SumHS2 = SumHS2 + HS22(k, iCol) * 2
iCount2 = iCount2 + IIf(HS22(k, iCol) > 0, 2, 0)
Next

If SumHS1 = 0 Or SumHS2 = 0 Then GoTo bien

Arr(k, 2) = (SumHS1 + SumHS2 + Thi2(k, 1) * 3) / (iCount1 + iCount2 + 3)
Arr(k, 3) = Round((2 * Arr(k, 2) + Arr(k, 1)) / 3, 1)
bien:
Next k
'gan vao'
.Range("AD" & fR & ":AF" & endR) = Arr

End With
Next iMon '
Set WF = Nothing
Set HS11 = Nothing: Set HS21 = Nothing
Set HS12 = Nothing: Set HS22 = Nothing
Set Thi1 = Nothing: Set Thi2 = Nothing
With Application
.ScreenUpdating = True: .Calculation = xlCalculationAutomatic
End With
MsgBox Timer - t
End Sub

Đây là code của bạn Ptm0412 trong bài của Bate mình kiểm tra thì thấy code này là nhanh nhất
dữ liệu của Ba Tê (bảng 1) Mình muốn chuyển sang dữ liệu kiểu này thì code trên phải chuyển lại như thế nào hả các bạn xin mọi người giúp đở cảm ơn các bạn nhiều
du74 liệu của mình (bảng 2)
 

File đính kèm

Giải thích thì sẽ có người như ThuNghi, NDU hay chính tác giả PTM, nhưng để hiểu . .

Bạn fải có vốn kiến thức cơ bản về lập trình (như đọc xong quyễn sách của PhanTuHuong mà GPE fát hành.)

Trong ngành bạn biết rồi đó: Ta không thể lấy cách giải dùng tích fân để tính diện tích 1 hình nào đó đem giải thích cho người có trình độ fổ thông cơ sở được. Mong bạn chớ fật lòng.

Chúc tuần làm việc kết quả.
 
Cảm ơn bạn nhiều. Bạn c1 thể chuyển giúp cái công thức sau sang macro mình với mình có tập tin đính kèm theo sau. Sau khi chuyển xong bạn cho mình 1 cái macro luôn nhen vì mình làm chưa được mới hỏi đó mà. Cảm ơn bạn nhiều
 

File đính kèm

Cảm ơn bạn nhiều. Bạn c1 thể chuyển giúp cái công thức sau sang macro mình với mình có tập tin đính kèm theo sau. Sau khi chuyển xong bạn cho mình 1 cái macro luôn nhen vì mình làm chưa được mới hỏi đó mà. Cảm ơn bạn nhiều
Tôi đang chập chững học VBA, thấy bài của Bạn giống giống bài của mình nên ngứa tay chứ thật ra tôi không biết gì nhiều lắm đâu.
Chỉ làm được phần tính TB HK, còn Xếp loại thì phải nghiên cứu thêm dài dài.
Như Sa_DQ viết ở bài trên:
Trong ngành bạn biết rồi đó: Ta không thể lấy cách giải dùng tích fân để tính diện tích 1 hình nào đó đem giải thích cho người có trình độ fổ thông cơ sở được. Mong bạn chớ fật lòng.
Bạn phải có một ít "vốn" VBA mới học hỏi thêm được, chứ chưa biết gì mà yêu cầu giải thích thì ... khó quá!
 

File đính kèm

Các bạn ơi chuyển giúp mình công tức này sang Macro với nhen (mình cảm ơn nhiều)
=IF(AC5="","",IF(AND(AC5>=8,OR(L5>=8,P5>=8),MIN(L5:W5)>6.4,COUNTIF(X5:Z5,"G")+COUNTIF(X5:Z5,"")+COUNTIF(X5:Z5,"K")=COUNTA(X5:Z5)),"G",IF(OR(AND(AC5>=6.5,OR(L5>=6.5,P5>=6.5),MIN(L5:W5)>=5,COUNTIF(X5:Z5,"Y")=0,COUNTIF(X5:Z5,"Keùm")=0),AND(AC5>=8,OR(L5>=8,P5>=8),OR(AND(MIN(L5:W5)>=3.5,COUNTIF(L5:W5,"<5.0")=1,COUNTIF(X5:Z5,"G")+COUNTIF(X5:Z5,"")+COUNTIF(X5:Z5,"K")=COUNTA(X5:Z5))))),"K",IF(OR(AND(AC5>=5,OR(L5>=5,P5>=5),MIN(L5:W5)>=3.5,COUNTIF(X5:Z5,"Y")+COUNTIF(X5:Z5,"Keùm")=0),AND(COUNTIF(L5:W5,"<3.5")+COUNTIF(X5:Z5,"Y")<=1,COUNTIF(X5:Z5,"Keùm")=0,MIN(L5:W5)>=2,AC5>=6.5,OR(L5>=6.5,P5>=6.5),COUNTIF(L5:W5,">=5")>=COUNT(L5:W5)-1),AND(COUNTIF(L5:W5,"<3.5")+COUNTIF(X5:Z5,"Y")+COUNTIF(X5:Z5,"Keùm")<=1,COUNTIF(L5:W5,">=6.5")>=COUNT(L5:W5)-1,AC5>=8,OR(L5>=8,P5>=8))),"Tb",IF(OR(AND(AC5>=3.5,MIN(L5:W5)>=2,COUNTIF(X5:Z5,"Keùm")=0),AND(COUNTIF(L5:W5,"<2")+COUNTIF(X5:Z5,"Keùm")<=1,COUNTIF(L5:W5,">=5")>=COUNT(L5:W5)-1,AC5>=6.5,OR(L5>=6.5,P5>=6.5))),"Y","Keùm")))))

Mình dịc công thu6c1 này cho các bạn dễ nhìn.
Nếu ô Ac5 ="" thì bỏ trống ngược lại tại ô AD5 sẽ thực hiện công thức sau
Điểm trung bình các môn tính điểm cột AC
Điểm trung bình môn Toán cột L
Điểm trung bình môn Ngữ văn cột P
Xếp loại Giỏi (G) nếu thỏa mãn tiêu chí sau:
Ô AC5>=8 và có một trong hai môn Toán (L5) hoặc Ngữ văn (P5) đạt từ 8 trở lên đồng thời không có môn nào có điểm trung bình nhỏ hơn 6.5 đồng thời các môn xếp loại phải thỏa mãn là loại Giỏi (G) + Loại khá (K)
Xếp loại khá (K) nếu thỏa mã tiêu chí sau:
Tiêu chí 1: Trung bình môn >=6.5 và có một trong hai môn Toán hoặc Ngữ văn đạt từ 6.5 trở lên các môn tính điểm còn lại không có môn nào dưới điểm 5 các môn xếp loại không có xếp loại Yếu (Y) loại kém
Tiêu chí 2: (trường hợp điều chỉnh)
Trung bình môn >=8.0 và có một trong hai môn Toán hoặc Ngữ văn đạt từ 8.0 trở lên và các môn tính điểm còn lại không có môn nào dưới 3.5 và tổng những môn tính điểm nhỏ hơn 5.0 chỉ có một môn (có một môn nhỏ hơn 5.0 nhưng lớn hơn 3.5 các môn tính điểm còn lại lớn hơn 6.4) và các môn xếp loại đạt loại Giỏi hay loại khá
Loại Trung bình (Tb) nêu thỏa mãn các tiêu chí sau:
Tiêu chi 1: Cột Trung bình >=5.0 và có một trong hai môn Toán hoặc Ngữ văn đạt từ 5.0 trở lên và các môn tính điểm còn lại không có môn nào dưới 3.5 và các môn xếp loại không có môn nào xếp loại Yếu hoặc kém.
Tiêu chí 2: (trường hợp điều chỉnh 1)
Nếu tổng số cột tính điểm (từ cột L đến cột W) + tổng các cột của các môn xếp loại xếp loại Y <=1 và không có xếp loại kém và điểm các môn tính điểm có điểm >=2 và cột trung bình môn >=6.5 và trong đó cột Toán hoặc Ngữ văn có ít nhất 1 môn >=6.5 và tổng số cột >=5 kết quả này bằng tổng số cột có dữ liệu -1
Tiêu chí 3 (trường hợp điều chỉnh)
Tổng các cột cố điểm <3.5 + cột xếp loại Y + cột xếp loại Kém <=1 và tổng số cột tính điểm từ L đến W có điểm trung bình >=6.5 phải >= tổng số cột có dữ liệu từ L đến W -1 và cột trung bình các môn >=8.0 đồng thời có ít nhất 1 cột Toán hoặc ngữ văn >=8.0
Loại Yếu (Y) nếu thỏa một trong các trường hợp sau:
Tiêu chí 1: trung bình môn >=3.5 Toán hoặc Văn phải có môn >=3.5 và không có môn nào điểm dưới 2 đồng thơi không có môn nào xếp loại kém
Tiêu chí 2: Tổng số cột từ L đến W nhỏ hơn 2 điểm + số cột xếp loại kém <=1 và tổng số cột >=5 phải >= tổng số cột từ L đến W có dữ liệu trừ 1 và cột trung bình >=6.5 đồng thời có ít nhất một môn Toán hoặc Ngữ văn lớn hơn 6.5
Loại kém là các trường hợp còn lại


Tôi đang chập chững học VBA, thấy bài của Bạn giống giống bài của mình nên ngứa tay chứ thật ra tôi không biết gì nhiều lắm đâu.
Chỉ làm được phần tính TB HK, còn Xếp loại thì phải nghiên cứu thêm dài dài.
Như Sa_DQ viết ở bài trên:
Bạn phải có một ít "vốn" VBA mới học hỏi thêm được, chứ chưa biết gì mà yêu cầu giải thích thì ... khó quá!
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom