Tải bản đầy đủ (.pdf) (32 trang)

Skkn sử dụng vba trong excel để lập báo cáo kết quả thi và tư vấn tổ hợp xét tuyển cho học sinh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (937.38 KB, 32 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA
TRƯỜNG THPT DÂN TỘC NỘI TRÚ NGỌC LẶC

SÁNG KIẾN KINH NGHIỆM

SỬ DỤNG VBA TRONG EXCEL ĐỂ LẬP BÁO CÁO KẾT
QUẢ THI VÀ TƯ VẤN TỔ HỢP XÉT TUYỂN
CHO HỌC SINH

Người thực hiện: Lê Xuân Thế
Chức vụ: Tổ trưởng chuyên môn
SKKN thuộc lĩnh vực (mơn): Khác

THANH HĨA NĂM 2022

skkn


MỤC LỤC
1. Mở đầu...................................................................................................................1
1.1. Lí do chọn đề tài.............................................................................................1
1.2. Mục đích nghiên cứu......................................................................................1
1.3. Đối tượng nghiên cứu.....................................................................................1
1.4. Phương pháp nghiên cứu................................................................................2
2. Nội dung sáng kiến kinh nghiệm...........................................................................2
2.1. Cơ sở lí luận của sáng kiến kinh nghiệm.......................................................2
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm........................3
2.3. Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết
vấn đề....................................................................................................................4
2.3.1. Hướng dẫn sử dụng.................................................................................4
2.3.1.1. Tạo file Excel dữ liệu...........................................................................4


2.3.1.2. Tạo các module và viết code................................................................5
2.3.1.3. Viết code cho các thủ tục.....................................................................7
2.3.1.4. Tạo nút chạy và gán marco..................................................................9
2.3.2. Hướng phát triển....................................................................................10
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản
thân, đồng nghiệp và nhà trường.........................................................................10
3. Kết luận, kiến nghị..............................................................................................12
3.1. Kết luận........................................................................................................12
3.2. Kiến nghị......................................................................................................12
TÀI LIỆU THAM KHẢO.....................................................................................13

skkn


1. Mở đầu
1.1. Lí do chọn đề tài
Xu thế giáo dục hiện đại khẳng định việc ứng dụng khoa học cơng nghệ
vào đời sống nói chung và trong lĩnh vực giáo dục nói riêng vơ cùng to lớn. Vai
trị đó được thể hiện ở một số khía cạnh sau đây: Người dạy và học dễ dàng thu
thập, tổng hợp, lưu trữ được lượng kiến thức phong phú đa dạng và được cập
nhật thường xuyên; Ứng dụng công nghệ vào giảng dạy có vai trị thúc đẩy giáo
dục mở, giúp hoạt động giáo dục đạt hiệu quả cao hơn.
Việc ứng dụng công nghệ thông tin trong Nhà trường là phù hợp với chủ
trương, chính sách của Đảng, Nhà nước và Bộ Giáo dục và Đào tạo.
Để nâng cao hiệu quả việc xây dựng báo cáo số liệu cho Sở GD&ĐT,
UBND huyện nhanh chóng, chính xác. Phân tích số liệu qua các đợt thi thử Tốt
nghiệp, tư vấn cho học sinh các tổ hợp xét tuyển tối ưu. Tôi xin đưa ra sáng kiến
kinh nghiệm:
“SỬ DỤNG VBA TRONG EXCEL ĐỂ LẬP BÁO CÁO KẾT QUẢ
THI VÀ TƯ VẤN TỔ HỢP XÉT TUYỂN CHO HỌC SINH”

1.2. Mục đích nghiên cứu
Sự phát triển của công nghệ khiến tri thức của nhân loại không ngừng tăng
lên theo cấp số nhân, Tập dữ liệu có khối lượng lớn và phức tạp. Độ lớn đến mức
cần các phần mềm xử lý dữ liệu chuyên nghiệp mới có khả năng thu thập, quản lý
và xử lý dữ liệu trong một khoảng thời gian hợp lý.
Là người được giao nhiệm vụ báo cáo kết quả sau kì thi với Sở GD&ĐT,
UBND Huyện, Ban giám hiệu. Tổng hợp báo cáo số liệu được u cầu nhanh
chóng, chính xác, nhiều cấu trúc diễn ra liên tục. Nên việc sử dụng VBA trong
Excel là cần thiết, có thể đáp ứng được với nhiều trường, không phụ thuộc số
lượng học sinh tham gia.
Tổ hợp xét tuyển hiện nay được thể hiện phần chữ (A, B, C, D, H,… ) để
nhận biết khối thi và phần số (00, 01, 02,...) để nhận biết tổ hợp. Có trên 185 tổ
hợp. Việc sử dụng VBA trong Excel sẽ tính nhanh kết quả điểm các tổ hợp xét
tuyển của từng học sinh, từ đó học sinh sẽ đưa ra phương án ôn tập tốt nhất, đạt
hiệu quả cao khi xét tuyển.
1.3. Đối tượng nghiên cứu
VBA là ngôn ngữ lập trình máy tính được viết tắt Visual Basic for
Applications sử dụng để tự động hóa các chức năng và nhiệm vụ của Microsoft
Excel. Các chương trình Visual Basic for Applications cũng được gọi là Macro
Excel hoặc VBA Macro và Macro.
Microsoft Excel cũng như tất cả các sản phẩm chính của Microsoft Office
như Word, PowerPoint, Access, Outlook đều đạt tiêu chuẩn với VBA. Bạn khơng
phải mua nó. Đừng nhầm lẫn VBA với VB.NET. Vì VB.NET là “anh cả” của
Visual Basic for Applications và trong khi VB.NET chia sẻ nhiều thuộc tính tốt
của VBA và hơn thế nữa, nó khó sử dụng hơn rất nhiều và đòi hỏi nhiều thời gian
và kiến thức để thành thạo sử dụng.
Mặt khác, Visual Basic for Applications rất dễ vận hành và học hỏi và có
thể được sử dụng như một điểm khởi đầu để vào VB.NET.
1


skkn


VBA kiểm soát Microsoft Excel bằng cách viết và chạy một quy trình cịn
được gọi là macro. Các quy trình Visual Basic for Applications được viết trong
VBA Editor mà bạn có thể nhận được bằng cách nhấn Alt + F11 trong Excel.
Các lệnh Excel được nhập vào mã máy tính cho Excel biết phải làm gì và
chúng được chạy theo trình tự. Ngồi các lệnh Excel, VBA cịn sở hữu các yếu tố
lập trình máy tính khác như logic, vịng lặp và chức năng cho phép các chương
trình rất phức tạp được phát triển gần như là đối thủ và vượt qua nhiều chương
trình trên thị trường hiện nay.
Sử dụng VBA với Excel, các cơng cụ phân tích mạnh mẽ có thể được phát
triển nhanh chóng với chi phí tối thiểu.
Mơi trường làm việc có mạng Internet, máy tính Windows, Microsoft
Office.
1.4. Phương pháp nghiên cứu
- Phương pháp nghiên cứu tài liệu.
- Phương pháp thực nghiệm.
- Phương pháp thống kê.
2. Nội dung sáng kiến kinh nghiệm
2.1. Cơ sở lí luận của sáng kiến kinh nghiệm
Công nghệ thông tin là thuật ngữ dùng để chỉ các ngành khoa học và công
nghệ liên quan đến thơng tin và q trình xử lý thơng tin. Như vậy, “CNTT là
một hệ thống các phương pháp khoa học, công nghệ, phương tiện, công cụ, bao
gồm chủ yếu là các máy tính, mạng truyền thơng và hệ thống các kho dữ liệu
nhằm tổ chức, lưu trữ, truyền dẫn và khai thác, sử dụng có hiệu quả các thông tin
trong mọi lĩnh vực hoạt động kinh tế, xã hội, văn hóa,… của con người”.
Ở Việt Nam, khái niệm CNTT được hiểu và định nghĩa trong Nghị quyết
số 49/CP của Chính phủ ký ngày 04/08/1993 về “Phát triển CNTT ở nước ta
trong những năm 90”: CNTT là tập hợp các phương pháp khoa học, các phương

tiện và công cụ kỹ thuật hiện đại - chủ yếu là kỹ thuật máy tính và viễn thơng
nhằm tổ chức, khai thác và sử dụng có hiệu quả các nguồn tài ngun thơng tin
rất phong phú và tiềm tàng trong mọi lĩnh vực hoạt động của con người và xã hội.
Trong các hướng dẫn thực hiện nhiệm vụ năm học hằng năm. Năm học 2019 2020, ngành Giáo dục tiếp tục tập trung thực hiện Nghị quyết số 29-NQ/TW ngày
04/11/2013 của Ban Chấp hành Trung ương Đảng, Nghị quyết số 44/NQ-CP
ngày 09/6/2014 của Chính phủ về đổi mới căn bản, tồn diện giáo dục và đào tạo;
Nghị quyết số 88/2014/QH13 ngày 28/11/2014 của Quốc hội khóa XIII, Nghị
quyết số 51/2017/QH14 ngày 21/11/2017 của Quốc hội khóa XIV và Chỉ thị số
16/CT-TTg ngày 18/6/2018 của Thủ tướng Chính phủ về đổi mới chương trình,
sách giáo khoa giáo dục phổ thông; các Nghị quyết của Đảng, Quốc hội, Chính
phủ và chỉ đạo của Thủ tướng Chính phủ.
Mã quy ước tổ hợp mơn xét tuyển ĐH, CĐ chính quy được thực hiện dựa
vào nội dung hướng dẫn theo Công văn số 310/KTKĐCLGD-TS ngày 20 tháng
03 năm 2015 của Bộ Giáo dục và Đào tạo. Bảng mã hóa các tổ hợp mơn thi và
xét tuyển Đại học, Cao đẳng chính quy được Cục Khảo thí và Kiểm định chất
lượng giáo dục, Bộ GD&ĐT thống kê. Theo đó, mã quy ước tổ hợp môn xét
2

skkn


tuyển bao gồm 10 tổ hợp môn thi truyền thống và 91 tổ hợp mơn thi mới. Ngồi
ra, các trường Đại học, CĐ lựa chọn các tổ hợp môn xét tuyển dựa vào ngành đào
tạo và yêu cầu riêng của mỗi trường.
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm
Công tác báo cáo Sở GD&ĐT về kết quả thi khảo sát Tốt nghiệp được
Phòng KT&KĐCLGD yêu cầu thường xuyên. Trước đây, sau khi thi xong, kết
quả được đếm "bo" để lấy dữ liệu. Tuy số liệu vẫn chính xác nhưng khá vất vả.

File nhập dữ liệu trực tuyến

Công tác báo cáo về kết quả thi với Ban giám hiệu nhà trường địi hỏi
nhanh chóng, so sánh làm nổi bật kết quả của các lớp.

Trước đây, khi chưa sử dụng VBA, việc tính tốn có áp dụng công thức
trong Excel. Do bảng biểu sử dụng công thức nên khi số lượng học sinh thay đổi,
số lớp thay đổi thì việc điều chỉnh tốn thời gian, file chia sẻ khó áp dụng.
Trong cơng tác tư vấn tổ hợp xét tuyển cho học sinh lớp 12. Các Thầy cô
giáo gặp khơng ít khó khăn vì số lượng tổ hợp lớn. Điểm tổ hợp nào là lớn nhất,
phù hợp nhất với học sinh, tổ hợp đó gồm những mơn gì...

Trường THPT DTNT Ngọc Lặc là ngơi trường có học sinh ở nhiều huyện
khác nhau. Năm 2021, trường đạt thành tích cao trong kì thi Tốt nghiệp, đứng thứ
5 tồn tỉnh về điểm trung bình các mơn, nhận được sự quan tâm của các UBND
các huyện. Tuy nhiên, mỗi huyện lại có yêu cầu để thưởng khác nhau. Có huyện
là học sinh của huyện đạt từ 27 điểm tổ hợp xét tuyển. Có huyện lại yêu cầu thêm
3

skkn


tổ hợp đó phải trong đăng kí nguyện vọng lần đầu... Nếu khơng có VBA hỗ trợ
thì cơng tác báo cáo tốn rất nhiều thời gian.
2.3. Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết
vấn đề
2.3.1. Hướng dẫn sử dụng
2.3.1.1. Tạo file Excel dữ liệu
File dữ liệu Excel được thiết kế như sau: Gồm có 4 sheet:
Sheet4: Sh_01: Là dữ liệu chính gồm 30 cột, chứa dữ liệu cần thiết gồm cột: Số
vnedu, Họ tên, điểm thi (cột 9 đến 17). Được trích xuất từ vnedu khi tổ chức thi
thử, khảo sát các đợt.


Còn các cột 18 đến 30, VBA sẽ tính tốn khi nháy vào các nút số  và .
Sheet2: Chung (VL): Được thiết kế vừa trang A4 in ngang, toàn bộ dữ liệu sẽ
được sao chép từ các sheet khác. Khi nháy vào nút số 1 (ô B1) dữ liệu sẽ được
làm mới. Còn nháy vào các nút số 2, 3, 4, 5 thì VBA sẽ sắp xếp lại dữ liệu các cột
đó. Mục đích để in ra niêm yết theo các phương án khác nhau. Ví dụ: Nháy vào
nút 3 đẻ sắp xếp theo lớp. Để tránh rườm khi in, ta ấn Ctrl và các nút, chọn đường
viền nút là không màu.

Sheet3: BaocaoSo: Được thiết kế theo form báo cáo file trực tuyến của Phịng
KT&KĐCLGD, Sở GD&ĐT Thanh Hóa.

4

skkn


Khi nháy nút 1 (ô B1) VBA sẽ load dữ liệu từ sheet1.
Trong sheet này cịn có phần báo cáo riêng cấp trường theo yêu cầu của Ban giám
hiệu:

Sheet5: KetnoiDL: Dữ liệu sheet này rất quan trọng, được xây dựng từ đầu năm
lớp 12. Thực hiện kiểm dò nhiều lần. Sửa xong cần khóa lại tránh sai sót vơ tình.

Mã vnedu của học sinh ở sheet này được sử dụng để tham chiếu. Ví dụ lấy dữ
liệu ngày sinh, lớp, T.H (học sinh chọn tổ hợp KHTN thì đánh dấu x), điểm trung
bình lớp 12, điểm khuyến khích, điểm ưu tiên...
Sheet1: Cactohop: Được cấu trúc dựa vào mã quy ước tổ hợp mơn xét tuyển
ĐH, CĐ chính quy được thực hiện dựa vào nội dung hướng dẫn theo Công văn số
310/KTKĐCLGD-TS ngày 20 tháng 03 năm 2015 của Bộ Giáo dục và Đào tạo.


2.3.1.2. Tạo các module và viết code
Để vào phần module chứa code thực thi, ta ấn tổ hợp phím Alt+F11. Cửa
sổ của VBA viết tắt từ Visual Basic For Applications sẽ hiện ra. VBA thường
được lập trình trên ứng dụng văn phịng như Word, Excel, PowerPoint,... Có thể
5

skkn


hiểu rằng tất cả những ngôn ngữ được sử dụng trong Excel đều sử dụng ngơn ngữ
VBA.
Trong kỹ thuật thì ngơn ngữ VBA là ngơn ngữ lập trình hướng vào những
sự kiện của riêng Microsoft. Người ta thường biết VBA là ngơn ngữ lập trình mở
rộng được tạo bởi tập hợp những lệnh cốt lõi và dần mở rộng trên cơ sở hình
thành của những ứng dụng, từ đó làm việc trực tiếp với những đối tượng có trong
ứng dụng.
Modules của sáng kiến được chia làm 3 phần:

Phần dành cho TN: Tinh_diem_TN
Sub Copysolieu_Tinhdiem được liên kết với nút thực thi số  ở Sheet
4(Sh_01) có nhiệm vụ gọi các Sub (thủ tục):
CopyLop_UT_KK có nhiệm vụ lấy dữ liệu (lớp, điểm trung bình lớp 12,
điểm ưu tiên, khuyến khích) từ Sheet5: KetnoiDL sang Sheet4: Sh_01.
Tinh_KHTN_KHXH có nhiệm vụ tính điểm các tổ hợp KHTN, KHXH,
tính điểm xét tốt nghiệp, xét khả năng đậu tốt nghiệp tại Sheet4: Sh_01.
Sub Copysolieu_Tinhdiem()
Call CopyLop_UT_KK
Call Tinh_KHTN_KHXH
End Sub


Phần dành cho tổ hợp: Tinh_diem_TH
Option Explicit
Public Sub sSh_01()
    s_DiemToHop
    DiemTH_Max
    TH_Max
End Sub

Public Sub sSh_01 được liên kết với nút thực thi số  ở Sheet 4(Sh_01) có
nhiệm vụ gọi các Sub (thủ tục):

6

skkn


s_DiemToHop "Điểm Tổ hợp" được dùng để tính điểm tổ hợp xét tuyển học sinh
đăng kí, ví dụ học sinh đăng kí tổ hợp A00 thì VBA sẽ cộng điểm các mơn Tốn,
Lý, Hóa.
DiemTH_Max " Tổ hợp điểm cao nhất có đăng ký": Trong các năm gần đây, học
sinh đăng kí xét tuyển lần đầu rất nhiều tổ hợp. Năm 2022 phần tuyển sinh Đại
học đã thay đổi nên mục này không phát triển nữa.
TH_Max "Tổ hợp điểm cao nhất bao gồm cả khơng đăng ký". VBA sẽ chạy dị
hết các tổ hợp, tìm ra tổ hợp mà học sinh có điểm cao nhất, xuất dữ liệu điểm và
các mơn thi liên quan.
Phần này sử dụng các biến mảng, thư viện nên cú pháp Option Explicit giúp mã
code VBA hoạt động theo cách mọi biến đều phải được khai báo trước khi sử
dụng.
Phần dành tính điểm trung bình, %: Tinh_phan_tram

Sub TINHP_TRAM được liên kết với nút thực thi số  ở Sheet 3(Baocaoso)
có nhiệm vụ gọi các Sub (thủ tục):
Sub
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
End

TINHP_TRAM()
    Call DEM_Toan
    Call DEM_Van
    Call DEM_T_anh
    Call DEM_Vly
    Call DEM_Hoah
    Call DEM_Sinhh
    Call DEM_Lsu
    Call DEM_Dly
    Call DEM_GDCD

    Call Tbmon
    Call Dinhdang
    Call laytieude
    Call demcaclop
    Sheet3.Select
    Cells(1, 1).Select
Sub

Các thủ tục tính tốn từ dữ liệu sheet4, xuất ra số lượng thí sinh thi các
mơn, phân loại điểm, % các loại. Đặc biệt là điểm trung bình tồn trường (= tổng
số điểm thi/tổng số bài thi). Một giá trị được dùng để so sánh, xếp thứ hạng các
trường THPT trong Tỉnh. Phần báo cáo Ban giám hiệu được sử dụng các cơng
thức cơ bản trong Excel để tính.
2.3.1.3. Viết code cho các thủ tục
Tất cả chương trình trong VBA phải bắt đầu bằng "Sub" và kết thúc bằng
"End sub". Ở đây tên là tên bạn muốn gán cho chương trình của bạn.
- Sub name().
- End Sub
Workbook và worksheet opject: đề cập phạm vi áp dụng các lệnh VBA
trong toàn bộ workbook hay worksheet.
Range opject: là đại diện một đối tượng trên bảng tính của bạn, đây là đối
tượng quan trọng nhất trong VBA Excel.
Variables: là một loại biến.
If then Statements: hàm so sánh điều kiện.
7

skkn


Loop: Vòng lặp – cho phép lặp lại thao tác trong một phạm vi.

Userform: là các nút bấm, box nhập liệu,…dùng để thiết kế giao diện.
Events: sự kiện trong Excel là các hành động của người dùng, dùng code
để thực hiện thao tác sau khi có các sự kiện sẵn.
Function & sub: function trả về giá trị cịn sub thì khơng trả về giá trị.
Trong mục này tơi xin trình bày code của Sub dùng để tính điểm của tổ
hợp KHTN, KHXT, điểm trung bình xét tốt nghiệp và xét thử học sinh có đậu tốt
nghiệp khơng. Cịn các code của sub khác được trình bày ở phần phụ lục.
Sub Tinh_KHTN_KHXH()
        'Xác định stt của dòng dữ liệu cuối
        jjj = Sheet4.Cells(Rows.Count, 1).End(xlUp).row
        'Chọn sheet4 để làm việc
        Sheet4.Select
        'Xóa dữ liệu các cột điểm KHTN, KHXH, điểm tbm, xét thử đậu tốt nghiệp
        range(Cells(3, 28), Cells(jjj, 29)).ClearContents
        range(Cells(3, 18), Cells(jjj, 19)).ClearContents
        'Khai báo biến i
        Dim i As Integer
                'Vòng lặp i chạy từ 3 đến dòng cuối
                For i = 3 To jjj
                        'Điều kiện chạy khi học sinh đủ 6 bài thi
                        If Application.WorksheetFunction.Count(Cells(i, 9),
Cells(i, 10), Cells(i, 11), Cells(i, 12), Cells(i, 13), Cells(i, 14)) = 6 Then
                              tam1 = (Cells(i, 12) + Cells(i, 13) + Cells(i, 14)) /
3
                                'Tính điểm bài thi KHTN
                              Cells(i, 18).Value =
Application.WorksheetFunction.Round(tam1, 2)
               'Tính điểm Tb để xét đậu TN, theo công thức của Bộ GD&ĐT
                                tamt1 = ((7 * ((Cells(i, 9) + Cells(i, 10) +
Cells(i, 11) + tam1 + Cells(i, 26)) / 4) + 3 * Cells(i, 25)) / 10) + Cells(i, 27)

                                Cells(i, 28).Value =
Application.WorksheetFunction.Round(tamt1, 2)
               'Xét điều kiện để đậu TN: Tbm >= 5 và khơng có điểm liệt
                                        If
Application.WorksheetFunction.And(Cells(i, 28) > 4.99999,
Application.WorksheetFunction.Min(Cells(i, 9), Cells(i, 10), Cells(i, 11), Cells(i,
12), Cells(i, 13), Cells(i, 14), Cells(i, 15), Cells(i, 16), Cells(i, 17)) >
1.000001) Then
                                                Cells(i, 29) = "Ð"
                                        End If
                        End If
                'Thốt vịng lặp
                Next i
        'Áp dụng tương tự với tổ hợp KHXH
        Dim j As Integer
                For j = 3 To jjj
                 If Application.WorksheetFunction.Count(Cells(j, 9), Cells(j, 10),
Cells(j, 11), Cells(j, 15), Cells(j, 16), Cells(j, 17)) = 6 Then
                        tam2 = (Cells(j, 15) + Cells(j, 16) + Cells(j, 17)) / 3
                        Cells(j, 19).Value =
Application.WorksheetFunction.Round(tam2, 2)
                        tamt2 = ((7 * ((Cells(j, 9) + Cells(j, 10) + Cells(j, 11) +
tam2 + Cells(j, 26)) / 4) + 3 * Cells(j, 25)) / 10) + Cells(j, 27)
                        Cells(j, 28).Value =
Application.WorksheetFunction.Round(tamt2, 2)
                                If Application.WorksheetFunction.And(Cells(j, 28) >
4.99999, Application.WorksheetFunction.Min(Cells(j, 9), Cells(j, 10), Cells(j, 11),

8


skkn


Cells(j, 12), Cells(j, 13),
> 1.000001) Then
                           
                           
                        End
                Next j
End Sub

Cells(j, 14), Cells(j, 15), Cells(j, 16), Cells(j, 17))
            Cells(j, 29) = "Ð"
    End If
If

2.3.1.4. Tạo nút chạy và gán marco
Trong các sheet dữ liệu, để việc gọi sub được dễ dàng, ta vẽ các nút bằng
cách chọn Insert/Shaper trên thanh công cụ của Excel. Sau đó tiến hành gán link
đến sub.
Tại sheet Sh_01 nút 1 gán sub Copysolieu_Tinhdiem(), nút 2 gán sub
s_DiemToHop().

Tại sheet Chung(VL) nút 1 gán sub Copy_bangmoi(), nút 2 gán sub
SX_SBD(), nút 3 gán sub SX_LOP(), nút 4 gán sub SX_TN(), nút 5 gán sub
SX_TH().
Tại sheet BaocaoSo nút 1 gán sub TINHP_TRAM().

9


skkn


2.3.2. Hướng phát triển
Visual Basic for Applications là một ngôn ngữ lập trình đi kèm trong bộ
phần mềm Office của Microsoft.
Khi thành thạo lập trình VBA sẽ cho phép viết các mã lệnh có tác động tới
nhiều đối tượng. Để làm tăng tính tự động hố trong ứng dụng của mình. Làm
những việc mà các cơng cụ sẵn có trong ứng dụng chưa có. Chẳng hạn như có thể
viết hàm tính tốn theo u cầu, hay các bài tốn tính tốn phức tạp mà cơng thức
có sẵn của Excel khơng thể đáp ứng được.
Nắm vững VBA giúp ích rất nhiều trong cơng việc: giúp tăng tốc trong q
trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình
khác như Word, Power Point, Outlook… giúp biến file Excel của trở thành 1
phần mềm chuyên nghiệp.
Hướng phát triển của sáng kiến kinh nghiệm: Đáp ứng được sự thay đổi
trong cách thi của Bộ GD&ĐT; xây dựng thành file chạy (exe, dll...); có thể add
các file dữ liệu, lập báo cáo, vẽ đồ thị so sánh qua các đợt thi. Hoàn thiện các
code để tăng tốc độ, báo cáo lỗi phát sinh...
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản
thân, đồng nghiệp và nhà trường
Thứ nhất, sáng kiến kinh nghiệm đã giúp các em biết về các tổ hợp khối thi
mà Bộ GD&ĐT quy định. Tự so sánh tổ hợp xét tuyển mà mình dự định đã trùng
với tổ hợp xét tuyển có điểm lớn nhất chưa. Từ đó đề ra kế hoạch học tập tốt hơn.

Thứ hai, việc niêm yết công khai bảng điểm được sắp xếp theo nhiều
phương án khác nhau (tổ hợp xét tuyển, xét đậu tốt nghiệp) giúp các em xây dựng
kế hoạch học tập cân bằng hơn, vừa đậu được Đại học vừa nâng được điểm trung
bình các mơn thi của Nhà trường cao lên.


Thứ ba, sáng kiến kinh nghiệm giúp công tác báo cáo của Nhà trường với
Phịng KT&KĐCLGD được chính xác và đúng hạn; Tham mưu cho Ban giám
hiệu về các nhóm học sinh. Ví dụ nhóm có nguy cơ trượt Tốt nghiệp, để Ban
giám hiệu kịp thời chấn chỉnh, động viên các em, chỉ đạo giáo viên có các biện
pháp thích hợp giúp các em tiến bộ.
10

skkn


Thứ tư, sáng kiến kinh nghiệm được lập không hạn chế số lượng học sinh.
Nên đã được các đồng nghiệp trường bạn đón nhận, dùng thử và cho nhận xét tốt.

Kết quả thi thử đợt 2 (đề Sở) của Trường THPT DTNT Ngọc Lặc

Kết quả của trường bạn với số lớp, số học sinh nhiều hơn!

Link tải file: />
File để chế độ khơng khóa, các đồng nghiệp tải về có thể tùy biến thêm
code để tham khảo và sử dụng.
11

skkn


3. Kết luận, kiến nghị
3.1. Kết luận
Thông qua kết quả thực tế đã đạt được, tôi thấy việc sử dụng VBA rất khả
quan. Thực hiện việc tính tốn, thống kê lên chuyên nghiệp hơn.
Thực hiện tốt công tác báo cáo với Sở GD&ĐT, Ban giám hiệu, UBND

các huyện, giáo viên và phụ huynh học sinh. Tham mưu được cho Ban giám hiệu
tồn cảnh của kì thi thử.
Giúp học sinh định hướng tốt hơn trong học tập. Hiệu ứng công khai bảng
điểm theo nhiều cấu trúc giúp các em xây dựng kế hoạch học tập phù hợp.
Nhận được sự ủng hộ của nhiều đồng nghiệp và học sinh, trong và ngoài
nhà trường.
Tuy nhiên, việc sử dụng và khai thác sử dụng VBA trong Excel vẫn gặp
phải sức ỳ ngại sự thay đổi của một số đồng nghiệp.
3.2. Kiến nghị
Đề nghị Sở Giáo dục và Đào tạo Thanh Hóa tăng cường mở các lớp tập
huấn về các phương pháp nghiên cứu khoa học, vận dụng công nghệ thông tin
vào thực tiễn. Để giáo viên có thể hình thành những ý tưởng, xây dựng những
sáng kiến, nâng cao được trình độ chun mơn, trình độ tin học của mình.
Đề nghị Nhà trường động viên giáo viên sử dụng các cải tiến mới. Thực
hiện hội thảo khoa học cấp trường, để giáo viên được giải cấp tỉnh báo cáo sáng
kiến của mình trước hội đồng khoa học nhà trường.
Thanh Hóa, ngày 20 tháng 5 năm 2022

XÁC NHẬN CỦA THỦ TRƯỞNG
ĐƠN VỊ

Tôi xin cam đoan đây là SKKN của tôi
viết, không sao chép nội dung của
người khác.
Người viết sáng kiến

Lê Xuân Thế

12


skkn


TÀI LIỆU THAM KHẢO
[1]. Âu Anh Tuấn. Các văn bản chỉ đạo về cơng tác thi Tốt nghiệp.
[2]. Dương Đình Sĩ. Các văn bản chỉ đạo công tác báo cáo.
[3]. Lê Quang Huy. Hướng dẫn thống kê kết quả khảo sát.
[4]. DiziBrand.VBA là gì? Cách VBA ra lệnh và kiểm soát trong Excel
[5]. />[6]. />
13

skkn


DANH MỤC
SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC HỘI ĐỒNG SÁNG KIẾN KINH
NGHIỆM NGÀNH GIÁO DỤC VÀ ĐÀO TẠO HUYỆN, TỈNH VÀ CÁC
CẤP CAO HƠN XẾP LOẠI TỪ C TRỞ LÊN
Họ và tên tác giả: Lê Xuân Thế
Chức vụ và đơn vị công tác: TTCM, Trường Dân tộc nội trú THPT Ngọc Lặc

TT

1

2

3

4

5

6

Cấp đánh giá
xếp loại
(Ngành GD cấp
huyện/tỉnh;
Tỉnh...)

Tên đề tài SKKN
“Sử dụng font chữ tự tạo để
soạn giáo án, ra đề thi mơn
Hóa học”
“Sử dụng Add-Ins tự tạo
trong word để hỗ trợ soạn
giáo án, ra đề thi mơn Hóa
học”
“Sử dụng phần mềm
Zipgrape để hỗ trợ chấm và
chữa đề thi trắc nghiệm mơn
Hóa học”
Sử dụng cơng cụ google form
để hỗ trợ học sinh làm bài tập
ở nhà mơn hóa học
Sử dụng phương pháp trộn
thư để giao bài tập Hóa học
về phịng cho học sinh nội trú
Giải pháp để nâng cao kỹ
năng ứng xử phòng chống

bạo lực học đường ở Trường
THPT Dân tộc nội trú Ngọc
Lặc

Ngành GD cấp
Tỉnh
Ngành GD cấp
Tỉnh
Ngành GD cấp
Tỉnh
Ngành GD cấp
Tỉnh
Ngành GD cấp
Tỉnh
Ngành GD cấp
Tỉnh

Kết quả
đánh giá
xếp loại
(A, B,
hoặc C)

Năm học
đánh giá
xếp loại
học


C


Năm
2015
2016
Năm
2016
2017

C

Năm
2017
2018

học


Năm
2018
2019
Năm
2019
2020
Năm
2020
2021

học



C

C
C

C

học


học

học


14

skkn


PHỤ LỤC
1. Code thực thi các công việc:
- Copy danh sách lớp, điểm Tbm lớp 12, ưu tiên, khuyến khích.
- Tính điểm bài thi KHTN, KHXH, điểm xét tốt nghiệp, xét khả năng đậu.
Sub Copysolieu_Tinhdiem()
Call CopyLop_UT_KK
Call Tinh_KHTN_KHXH
End Sub
Sub CopyLop_UT_KK()
Sheet4.Select

T = Sheet4.Cells(Rows.Count, 1).End(xlUp).row
    Dim vnedu As range
    Set vnedu = range("C3:C" & T)
    Dim lop12 As range
    Dim Tblop12 As range
    Dim KKlop12 As range
    Dim UTlop12 As range
  
    Dim I As Integer
    For I = 1 To T + 1
        For Each lop12 In vnedu
            If lop12.Value = Sheet5.Cells(I, 1).Value Then
            'Du lieu ve lop
            lop12.Offset(0, 27).Value = Sheet5.Cells(I, 4).Value
            End If
        Next lop12
        For Each Tblop12 In vnedu
            If Tblop12.Value = Sheet5.Cells(I, 1).Value Then
            'Du lieu ve DiemTb
            Tblop12.Offset(0, 22).Value = Sheet5.Cells(I, 12).Value
            End If
        Next Tblop12
        For Each KKlop12 In vnedu
            If KKlop12.Value = Sheet5.Cells(I, 1).Value Then
            'Du lieu ve DiemKK
            KKlop12.Offset(0, 23).Value = Sheet5.Cells(I, 13).Value
            End If
        Next KKlop12
        For Each UTlop12 In vnedu
            If UTlop12.Value = Sheet5.Cells(I, 1).Value Then

            'Du lieu ve DiemKK
            UTlop12.Offset(0, 24).Value = Sheet5.Cells(I, 14).Value
            End If
        Next UTlop12
    Next I
End Sub
Sub Tinh_KHTN_KHXH()
        jjj = Sheet4.Cells(Rows.Count, 1).End(xlUp).row
        Sheet4.Select
        range(Cells(3, 28), Cells(jjj, 29)).ClearContents
        range(Cells(3, 18), Cells(jjj, 19)).ClearContents
15

skkn


        Dim I As Integer
                For I = 3 To jjj
                        If Application.WorksheetFunction.Count(Cells(I, 9), Cells(I, 10), Cells(I, 11), Cells(I, 12), Cells(I,
13), Cells(I, 14)) = 6 Then
                                tam1 = (Cells(I, 12) + Cells(I, 13) + Cells(I, 14)) / 3
                                'Tinh KHTN
                                Cells(I, 18).Value = Application.WorksheetFunction.Round(tam1, 2)
                                'Tinh DXTN
                                tamt1 = ((7 * ((Cells(I, 9) + Cells(I, 10) + Cells(I, 11) + tam1 + Cells(I, 26)) / 4) + 3 * Cells(I,
25)) / 10) + Cells(I, 27)
                                Cells(I, 28).Value = Application.WorksheetFunction.Round(tamt1, 2)
                                'Tinh diem TB cac mon va xet TN
                                        If Application.WorksheetFunction.And(Cells(I, 28) > 4.99999,
Application.WorksheetFunction.Min(Cells(I, 9), Cells(I, 10), Cells(I, 11), Cells(I, 12), Cells(I, 13), Cells(I, 14),

Cells(I, 15), Cells(I, 16), Cells(I, 17)) > 1.000001) Then
                                                Cells(I, 29) = "Ð"
                                        End If
                        End If
                Next I
        Dim J As Integer
                For J = 3 To jjj
                 If Application.WorksheetFunction.Count(Cells(J, 9), Cells(J, 10), Cells(J, 11), Cells(J, 15), Cells(J, 16),
Cells(J, 17)) = 6 Then
                        tam2 = (Cells(J, 15) + Cells(J, 16) + Cells(J, 17)) / 3
                        'Tinh KHXH
                        Cells(J, 19).Value = Application.WorksheetFunction.Round(tam2, 2)
                        tamt2 = ((7 * ((Cells(J, 9) + Cells(J, 10) + Cells(J, 11) + tam2 + Cells(J, 26)) / 4) + 3 * Cells(J, 25)) /
10) + Cells(J, 27)
                        Cells(J, 28).Value = Application.WorksheetFunction.Round(tamt2, 2)
                                If Application.WorksheetFunction.And(Cells(J, 28) > 4.99999,
Application.WorksheetFunction.Min(Cells(J, 9), Cells(J, 10), Cells(J, 11), Cells(J, 12), Cells(J, 13), Cells(J, 14),
Cells(J, 15), Cells(J, 16), Cells(J, 17)) > 1.000001) Then
                                        Cells(J, 29) = "Ð"
                                End If
                        End If
                Next J
End Sub
Sub Copy_bangmoi()
    T = Sheet4.Cells(Rows.Count, 1).End(xlUp).row
    'COPY MANG DANH SACH
    Sheets("Sh_01").Select
    range(Cells(2, 1), Cells(T, 4)).Select
    Selection.Copy
    Sheets("Chung (VL)").Select

    range("A4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
      Application.CutCopyMode = False
    'COPY MANG DIEM SO
        Sheets("Sh_01").Select
    range(Cells(2, 9), Cells(T, 17)).Select
16

skkn


    Selection.Copy
    Sheets("Chung (VL)").Select
    range("H4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
      Application.CutCopyMode = False
    'COPY MANG XET TN
           Sheets("Sh_01").Select
    range(Cells(2, 28), Cells(T, 29)).Select
    Selection.Copy
    Sheets("Chung (VL)").Select
    range("Q4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
      Application.CutCopyMode = False
    'COPY MANG XET TO HOP
           Sheets("Sh_01").Select
    range(Cells(2, 22), Cells(T, 23)).Select

    Selection.Copy
    Sheets("Chung (VL)").Select
    range("S4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
      Application.CutCopyMode = False
 '==================================================
    'COPY TIEU DE
    Sheets("KetnoiDL").Select
    range(Cells(1, 3), Cells(1, 5)).Select
    Selection.Copy
    Sheets("Chung (VL)").Select
    range("E4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
      Application.CutCopyMode = False
 Dim arr As Variant
Dim I As Integer
Dim J As Integer
T = Sheet4.Cells(Rows.Count, 1).End(xlUp).row - 2
arr = Sheet5.range("A2:K" & T + 1).Value
For J = 1 To T
For I = 5 To T + 4
    If Sheet2.Cells(I, 3) = arr(J, 1) Then
    Sheet2.Cells(I, 5) = arr(J, 3)
    Sheet2.Cells(I, 6) = arr(J, 4)
    Sheet2.Cells(I, 7) = arr(J, 5)
    End If
 Next I
Next J

End Sub
'Sap xep theo yeu cau
Sub SX_TN()
17

skkn


Sheets("Chung (VL)").Select
range("B5", range("T" & Rows.Count).End(xlUp)).Sort [Q5], xlDescending
End Sub
Sub SX_TH()
Sheets("Chung (VL)").Select
range("B5", range("T" & Rows.Count).End(xlUp)).Sort [S5], xlDescending
End Sub
Sub SX_LOP()
    T = Sheet4.Cells(Rows.Count, 1).End(xlUp).row + 4
Sheets("Chung (VL)").Select
range("B5", range("T" & T)).Sort [B5], xlAscending
Sheets("Chung (VL)").Select
range("B5", range("T" & T)).Sort [F5], xlAscending
End Sub
Sub SX_SBD()
    T = Sheet4.Cells(Rows.Count, 1).End(xlUp).row + 4
Sheets("Chung (VL)").Select
range("B5", range("T" & T)).Sort [B5], xlAscending
End Sub
----------------------------------------------------------------------2. Code thực thi các cơng việc:
- Tính các điểm theo tổ hợp đã đăng ký.
- Tính điểm lớn nhất trong các tổ hợp đã đăng ký

- Tính điểm tổ hợp cao nhất có thể có.
Option Explicit
Public Sub sSh_01()
    s_DiemToHop
    DiemTH_Max
    TH_Max
End Sub
Public Sub s_DiemToHop()
Dim dic As Object, sArr(), dArr(), MATH As String
Dim I As Long, J As Long, R As Long
    Set dic = CreateObject("Scripting.Dictionary")
sArr = Sheets("Cactohop").range("A2", Sheets("Cactohop").range("A3").End(xlDown)).Resize(, 13).Value
    R = UBound(sArr)
    For I = 2 To R
        For J = 3 To 13
            If sArr(I, J) > 0 Then
                dic.Item(sArr(I, 1)) = dic.Item(sArr(I, 1)) & "#" & sArr(1, J) & "$"
            End If
        Next J
    Next I
    '===================================================='
With Sheets("Sh_01")
    sArr = .range("G2", .range("G100000").End(xlUp)).Resize(, 13).Value
    R = UBound(sArr)
    ReDim dArr(1 To R - 1, 1 To 1)
    For I = 2 To R
        If sArr(I, 1) <> Empty Then
        If dic.exists(sArr(I, 1)) Then
18


skkn



×