Em nhờ các bác trong việc tính điểm tổ hợp thi của học sinh thi TN THPT. Em cảm ơn ạ.

Liên hệ QC

trungtamcnc

Thành viên hoạt động
Tham gia
5/4/10
Bài viết
124
Được thích
9
Em nhờ các bác trong việc tính điểm tổ hợp thi của học sinh:
- Phần điểm tổ hợp và tổ hợp cao nhất học sinh đăng kí, em đã viết code chứa if then, nên rất hạn chế khi mở rộng. Nhờ các bác giúp sang dạng mảng, để khi mở rộng tổ hợp thì không phải sửa code.
- Phần tính điểm tổ hợp cao nhất có thể có và tên tổ hợp đó, em đã nhờ các bác hôm trước, nhưng do em chưa thạo, không sửa được để đưa vào file này.
Cảm ơn các bác rất nhiều.
1628819757763.png
 

File đính kèm

  • Vba tinh diem to hop gui.xlsm
    37.7 KB · Đọc: 10
Em nhờ các bác trong việc tính điểm tổ hợp thi của học sinh:
- Phần điểm tổ hợp và tổ hợp cao nhất học sinh đăng kí, em đã viết code chứa if then, nên rất hạn chế khi mở rộng. Nhờ các bác giúp sang dạng mảng, để khi mở rộng tổ hợp thì không phải sửa code.
- Phần tính điểm tổ hợp cao nhất có thể có và tên tổ hợp đó, em đã nhờ các bác hôm trước, nhưng do em chưa thạo, không sửa được để đưa vào file này.
Cảm ơn các bác rất nhiều.
Giải thích giùm 3 cột này khác nhau thế nào?
1."Điểm Tổ hợp"
2."Tổ hợp điểm cao nhất có ĐK"
3."Điểm tổ hợp cao nhất có thể có"
.
 
Lần chỉnh sửa cuối:
Giải thích giùm 3 cột này khác nhau thế nào?
1."Điểm Tổ hợp"
Ví dụ học sinh đăng kí thi A00 thì mình sẽ lấy điểm Toán, Lý, Hóa cộng lại ạ.
2."Tổ hợp điểm cao nhất có ĐK"
Học sinh có thể đăng kí đến 20 loại tổ hợp khác nhau, vd ngoài A00 thì có thể A01, D07.. (Bộ GD cho phép). Nên mình tìm ra tổ hợp em ấy thi cao nhất để ...khen thưởng.
3."Điểm tổ hợp cao nhất có thể có"

.
Trong các tổ hợp của Bộ (lên đến 170) thì mình quét các tổ hợp cho phép đó để xem học sinh đạt cao nhất tổ hợp nào, tư vấn có học sinh tốt hơn ạ. Năm nay bác có biết môn GDCD cao ngất ngưởng không ạ? nên tổ hợp nào có môn đó thường cao.
 
Em nhờ các bác trong việc tính điểm tổ hợp thi của học sinh:
- Phần điểm tổ hợp và tổ hợp cao nhất học sinh đăng kí, em đã viết code chứa if then, nên rất hạn chế khi mở rộng. Nhờ các bác giúp sang dạng mảng, để khi mở rộng tổ hợp thì không phải sửa code.
- Phần tính điểm tổ hợp cao nhất có thể có và tên tổ hợp đó, em đã nhờ các bác hôm trước, nhưng do em chưa thạo, không sửa được để đưa vào file này.
Cảm ơn các bác rất nhiều.
Thay code của bạn bằng:
Rich (BB code):
Sub DiemToHop()
Dim i&, j&, k&
Dim arrN, arrKQ, arrTH
Dim DiemTH As Double

With Sheet5
    arrN = .Range("G3:T" & .Range("G" & Rows.Count).End(xlUp).Row)
    arrKQ = .Range("U3:U" & .Range("G" & Rows.Count).End(xlUp).Row)
End With
With Sheet1
    arrTH = .Range("A2", .Cells(.Range("A" & Rows.Count).End(xlUp).Row, _
            .Cells(2, Columns.Count).End(xlToLeft).Column))
End With
For i = 1 To UBound(arrN)
    For j = 2 To UBound(arrTH)
        If arrN(i, 1) = arrTH(j, 1) Then
            For k = 3 To UBound(arrTH, 2)
                If arrTH(j, k) = 1 Then
                    DiemTH = DiemTH + arrN(i, k)
                End If
            Next
            Exit For
        End If
    Next
    arrKQ(i, 1) = DiemTH
    DiemTH = 0
Next
With Sheet5.Range("U3").Resize(UBound(arrN), 1)
    .ClearContents
    .Value = arrKQ
End With
End Sub
 
Em nhờ các bác trong việc tính điểm tổ hợp thi của học sinh:
- Phần điểm tổ hợp và tổ hợp cao nhất học sinh đăng kí, em đã viết code chứa if then, nên rất hạn chế khi mở rộng. Nhờ các bác giúp sang dạng mảng, để khi mở rộng tổ hợp thì không phải sửa code.
- Phần tính điểm tổ hợp cao nhất có thể có và tên tổ hợp đó, em đã nhờ các bác hôm trước, nhưng do em chưa thạo, không sửa được để đưa vào file này.
Cảm ơn các bác rất nhiều.
View attachment 263994
Tham gia 1 Sub tính điểm Tổ hợp cột T.
Các cột khác tính sau.
 

File đính kèm

  • Vba tinh diem to hop.xlsb
    36.7 KB · Đọc: 4
Thay code của bạn bằng:
Rich (BB code):
Sub DiemToHop()
Dim i&, j&, k&
Dim arrN, arrKQ, arrTH
Dim DiemTH As Double

With Sheet5
    arrN = .Range("G3:T" & .Range("G" & Rows.Count).End(xlUp).Row)
    arrKQ = .Range("U3:U" & .Range("G" & Rows.Count).End(xlUp).Row)
End With
With Sheet1
    arrTH = .Range("A2", .Cells(.Range("A" & Rows.Count).End(xlUp).Row, _
            .Cells(2, Columns.Count).End(xlToLeft).Column))
End With
For i = 1 To UBound(arrN)
    For j = 2 To UBound(arrTH)
        If arrN(i, 1) = arrTH(j, 1) Then
            For k = 3 To UBound(arrTH, 2)
                If arrTH(j, k) = 1 Then
                    DiemTH = DiemTH + arrN(i, k)
                End If
            Next
            Exit For
        End If
    Next
    arrKQ(i, 1) = DiemTH
    DiemTH = 0
Next
With Sheet5.Range("U3").Resize(UBound(arrN), 1)
    .ClearContents
    .Value = arrKQ
End With
End Sub
Cảm ơn bạn đã quan tâm, nhưng cột U dùng để tính ra giá trị max điểm các tổ hợp của cùng 1 học sinh ạ. 1628824784922.png
 
Cảm ơn bạn đã quan tâm, nhưng cột U dùng để tính ra giá trị max điểm các tổ hợp của cùng 1 học sinh ạ. View attachment 264006
Dữ liệu chép ra đầy đủ các dòng như thế có sao đâu, chỉ là bạn không quen mắt với cách trình bày như thế.
Bạn muốn phải ra như thế này phải không?

P/S: À quên, cột U của tôi là cột V trên file của bạn gửi. Tôi đã chèn thêm 1 cột điểm năng khiếu. Bạn xem file kèm cho tiện:
1628826477202.png
 

File đính kèm

  • Vba tinh diem to hop gui_trungtamcnc.xlsm
    38.5 KB · Đọc: 1
Dữ liệu chép ra đầy đủ các dòng như thế có sao đâu, chỉ là bạn không quen mắt với cách trình bày như thế.
Bạn muốn phải ra như thế này phải không?

P/S: À quên, cột U của tôi là cột V trên file của bạn gửi. Tôi đã chèn thêm 1 cột điểm năng khiếu. Bạn xem file kèm cho tiện:
View attachment 264008
Của mình: 1628826905339.png
Của bạn: 1628826940179.png
Bạn sử dụng mảng rất hay. Nhưng mình đề nghị là: Tính điểm tổ hợp ra cột 21, chọn lấy 1 giá trị tổ hợp max của từng học sinh ở cột 22. Mình cảm ơn.
 
Để tính ra cột 22 thì trường hợp này thế nào (tôi lấy từ file gốc của bạn)
1628827524291.png

Tính cho HS này thì điểm cao nhất là 25.75 chứ đâu phải 23.75?
 

File đính kèm

  • Vba tinh diem to hop gui_trungtamcnc.xlsm
    39.2 KB · Đọc: 5
Làm tiếp bài #5.
Hiểu sao làm vậy, tôi viết từng Sub riêng để kiểm tra kết quả.
Bạn kiểm tra thủ công xem kết quả sai dòng nào, nếu đúng là cái gì...
 

File đính kèm

  • Vba tinh diem to hop V2.xlsb
    38.5 KB · Đọc: 7
Làm tiếp bài #5.
Hiểu sao làm vậy, tôi viết từng Sub riêng để kiểm tra kết quả.
Bạn kiểm tra thủ công xem kết quả sai dòng nào, nếu đúng là cái gì...
Hơn cả sự mong đợi ạ. Cảm ơn bác. Nhưng nó chỉ chạy đến dòng 417 thôi ạ. Bác giúp em cho chạy đến dòng cuối của bảng dữ liệu nhé! Cảm ơn bác.1628838114219.png
Bài đã được tự động gộp:

Gửi lại file code thêm cột điểm cao nhất.
Bạn thật bao quát, thêm cho mình cột điểm năng khiếu. Cảm ơn bạn.
 
Cảm ơn bác. Nhưng nó chỉ chạy đến dòng 417 thôi ạ. Bác giúp em cho chạy đến dòng cuối của bảng dữ liệu nhé!
Bạn đưa cái file chỉ có vài chục dòng, file nào có đến dòng 418?
Đâu ai đoán mò dữ liệu thật của bạn thế nào là lần.
Có Sub tôi dùng cột Số CMND để xét, có Sub dùng cột khác, dữ liệu trong cột không liên tục, có ô rỗng cũng phải thấy mới biết mà bỏ qua chứ.
Đưa cái file "giống thật" khoảng 10.000 dòng lên đi.
 
Bạn đưa cái file chỉ có vài chục dòng, file nào có đến dòng 418?
Đâu ai đoán mò dữ liệu thật của bạn thế nào là lần.
Dạ bác, nó liên quan đến số CCCD, họ tên học sinh nên em thu gọn và đổi. Em không đưa vào tình huống học sinh không xét Đại học. Em đã sửa lại file. Giúp em với nhé! Cảm ơn bác.
 

File đính kèm

  • Vba tinh diem to hop V2.1.xlsb
    38.1 KB · Đọc: 3
Dạ bác, nó liên quan đến số CCCD, họ tên học sinh nên em thu gọn và đổi. Em không đưa vào tình huống học sinh không xét Đại học. Em đã sửa lại file. Giúp em với nhé! Cảm ơn bác.
Chuyện của mình chỉ một mình mình biết, muốn người khác hiểu thì phải giải thích rõ, chứ đưa cái file rồi bảo người khác hiểu như ý mình thì làm khó người khác rồi.
Ví dụ thế nào là không xét Đại học (Cột E không đánh dấu X? cột G không có Mã tổ hợp?) Những cột nào không cần tính kết quả? V.v...
Như trong hình bài #13, cột C (Số CMND) trống rỗng, code sẽ chạy "trớt hướt"
 

File đính kèm

  • Vba tinh diem to hop V3.xlsb
    38 KB · Đọc: 9
Lần chỉnh sửa cuối:
Chuyện của mình chỉ một mình mình biết, muốn người khác hiểu thì phải giải thích rõ, chứ đưa cái file rồi bảo người khác hiểu như ý mình thì làm khó người khác rồi.
Ví dụ thế nào là không xét Đại học (Cột E không đánh dấu X? cột G không có Mã tổ hợp?) Những cột nào không cần tính kết quả? V.v...
Như trong hình bài #13, cột C (Số CMND) trống rỗng, code sẽ chạy "trớt hướt"
Rất hoàn hảo rồi ạ! Em sẽ rút kinh nghiệm. Cảm ơn bác nhiều ạ.
 
Web KT
Back
Top Bottom