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