Có thể bạn quan tâm: Cách Lấy Giá Trị Độc Nhất (unique Values) Trong Cột Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Giới thiệu chung về VBA và lý do bạn nên học
Microsoft Excel không chỉ là một công cụ tính toán đơn giản mà còn là một nền tảng mạnh mẽ cho việc tự động hoá quy trình công việc. VBA (Visual Basic for Applications) là ngôn ngữ lập trình tích hợp sẵn trong Excel, cho phép bạn viết macro, tạo giao diện người dùng, xử lý dữ liệu lớn và tương tác với các ứng dụng Office khác. Nếu bạn chưa từng viết một dòng code nào, đừng lo lắng—bài viết này được thiết kế dành cho “dummies”, tức là người mới bắt đầu, nhưng cũng cung cấp đủ chiều sâu để bạn có thể tiến tới các dự án phức tạp hơn.
Trong phần này, chúng ta sẽ:
- Hiểu cơ bản về môi trường VBA: Mở trình chỉnh sửa, cấu trúc một macro cơ bản.
- Nắm vững cú pháp và các khái niệm quan trọng: Biến, kiểu dữ liệu, vòng lặp, điều kiện.
- Áp dụng VBA vào các tình huống thực tế: Tự động hoá nhập liệu, tạo báo cáo, gửi email.
- Tối ưu hoá và bảo trì mã nguồn: Debug, comment, modularization.
- Mở rộng: Gọi API, làm việc với các file khác, tạo form người dùng.
Bây giờ, chúng ta sẽ đi từng bước một, bắt đầu từ cài đặt môi trường cho tới việc triển khai một dự án hoàn chỉnh.
Có thể bạn quan tâm: Excel Tự Xóa Số 0: Cách Thực Hiện, Lý Do Và Những Lưu Ý Quan Trọng
1. Cài đặt và mở môi trường VBA trong Excel
1.1 Kích hoạt tab “Developer”
Mặc định, Excel không hiển thị tab “Developer”. Để bật:
- File → Options → Customize Ribbon.
- Trong danh sách bên phải, tích vào Developer và nhấn OK.
Mẹo: Nếu bạn dùng Excel phiên bản tiếng Anh, mục này là “Developer”. Nếu không thấy, có thể cần kiểm tra phiên bản Office của bạn có hỗ trợ VBA không (Office 365, Office 2026 đều có).
1.2 Mở Visual Basic Editor (VBE)
- Nhấn Alt + F11 hoặc vào tab Developer → Visual Basic.
- Giao diện VBE gồm: Project Explorer (cây thư mục), Properties Window, Code Window và Immediate Window.
1.3 Tạo một macro đầu tiên
- Trong VBE, Insert → Module. Một module mới sẽ xuất hiện.
- Gõ đoạn code sau:
Sub HelloWorld() MsgBox "Xin chào, VBA!"
End Sub
- Đóng VBE, quay lại Excel, nhấn Alt + F8, chọn HelloWorld, rồi nhấn Run. Bạn sẽ thấy một hộp thoại thông báo hiện ra.
Giải thích nhanh:
Sublà viết tắt của subroutine (thủ tục), không trả về giá trị.MsgBoxlà hàm hiển thị hộp thoại.
Có thể bạn quan tâm: Cách Tính Kết Quả Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Cấu trúc cơ bản của một chương trình VBA
2.1 Các thành phần chính
| Thành phần | Mô tả | Ví dụ |
|---|---|---|
| Procedures (Sub / Function) | Đoạn mã thực thi một nhiệm vụ. Sub không trả về giá trị, Function trả về. | Sub TinhTong()Function TinhTien() As Double |
| Variables | Lưu trữ dữ liệu tạm thời. | Dim i As Integer |
| Data Types | Xác định kiểu dữ liệu: Integer, Long, Double, String, Boolean, Variant, Object… | Dim ten As String |
| Control Structures | Vòng lặp (For, Do While), câu điều kiện (If...Then...Else). | If a > b Then … |
| Error Handling | Xử lý lỗi bằng On Error. | On Error GoTo ErrHandler |
| Comments | Ghi chú, bắt đầu bằng '. | ' Đây là comment |
2.2 Quy tắc đặt tên và chuẩn coding
- CamelCase hoặc PascalCase:
TinhTong,tongCong. - Không dùng ký tự đặc biệt (ngoại trừ
_). - Tên biến ngắn gọn nhưng có nghĩa:
ws= worksheet,rng= range. - Sử dụng Option Explicit ở đầu mỗi module để buộc khai báo biến:
Option Explicit
Nếu không, VBA sẽ tạo biến ngầm khi bạn gõ sai tên, dẫn tới lỗi khó phát hiện.
3. Kiểu dữ liệu và biến trong VBA
3.1 Kiểu dữ liệu số
| Kiểu | Kích thước | Giá trị tối đa | Khi nào dùng |
|---|---|---|---|
| Byte | 1 byte | 0 – 255 | Dữ liệu nhỏ, tiết kiệm bộ nhớ |
| Integer | 2 byte | -32,768 – 32,767 | Số nguyên ngắn |
| Long | 4 byte | -2,147,483,648 – 2,147,483,647 | Số nguyên lớn (thường dùng) |
| Single | 4 byte | ±3.402823E38 (6 chữ số thập phân) | Số thực với độ chính xác vừa đủ |
| Double | 8 byte | ±1.797693134862315E308 (15 chữ số) | Số thực chính xác cao |
| Currency | 8 byte | ±922,337,203,685,477.5807 | Tiền tệ, tránh lỗi làm tròn |
3.2 Kiểu dữ liệu chuỗi và ngày tháng
- String: Chuỗi ký tự, có thể khai báo cố định (
Dim ten As String 20) hoặc động (Dim ten As String). - Date: Lưu trữ ngày và giờ. Ví dụ:
Dim ngaySinh As Date.
Dim ten As String
ten = "Nguyễn Văn A"
Dim ngaySinh As Date
ngaySinh = #12/31/1990#
3.3 Kiểu Object và Variant
- Object dùng để tham chiếu tới đối tượng Excel (Worksheet, Range, Workbook…). Ví dụ:
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Data")
- Variant là kiểu dữ liệu “bình quân” có thể chứa bất kỳ kiểu nào. Dùng khi không chắc kiểu dữ liệu, nhưng nên tránh vì tốn bộ nhớ.
4. Câu lệnh điều kiện và vòng lặp
4.1 If…Then…Else
If score >= 90 Then grade = "A"
ElseIf score >= 80 Then grade = "B"
Else grade = "C"
End If
4.2 Select Case (thay thế nhiều If)
Select Case month Case 1, 2, 12 season = "Winter" Case 3 To 5 season = "Spring" Case 6 To 8 season = "Summer" Case 9 To 11 season = "Autumn" Case Else season = "Unknown"
End Select
4.3 Vòng lặp For…Next
Dim i As Long
For i = 1 To 10 Cells(i, 1).Value = i 2
Next i
4.4 For Each…Next (đối với collection)
Dim rng As Range
For Each rng In Selection rng.Interior.Color = vbYellow
Next rng
4.5 Do While / Do Until
Dim row As Long
row = 1
Do While Cells(row, 1).Value <> "" row = row + 1
Loop
MsgBox "Dòng cuối cùng có dữ liệu là: " & row - 1
5. Làm việc với Range và Worksheet
5.1 Tham chiếu tới ô và vùng dữ liệu
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' Tham chiếu một ô
ws.Range("A1").Value = "Hello" ' Tham chiếu nhiều ô
ws.Range("A1:B10").ClearContents ' Dùng Cells(row, col)
ws.Cells(5, 3).Value = 123 ' C5
5.2 Đọc và ghi dữ liệu nhanh (Bulk)
Khi làm việc với hàng nghìn dòng, việc lặp từng ô sẽ rất chậm. Thay vào đó, dùng mảng:
Dim arr As Variant
arr = ws.Range("A1:C1000").Value ' Đọc thành mảng 2 chiều ' Xử lý trong VBA
Dim i As Long
For i = LBound(arr, 1) To UBound(arr, 1) arr(i, 2) = arr(i, 2) 2 ' Nhân cột B đôi
Next i ' Ghi lại
ws.Range("A1:C1000").Value = arr
5.3 Tìm kiếm và lọc dữ liệu
Dim findRng As Range
Set findRng = ws.Columns("A").Find(What:="John", LookIn:=xlValues, LookAt:=xlWhole)
If Not findRng Is Nothing Then MsgBox "Tìm thấy tại dòng " & findRng.Row
End If
6. Tự động hoá các công việc thường gặp
6.1 Import dữ liệu từ file CSV
Sub ImportCSV() Dim filePath As String filePath = Application.GetOpenFilename("CSV Files (.csv),.csv") If filePath = "False" Then Exit Sub With ThisWorkbook.Sheets("Data").QueryTables.Add(Connection:="TEXT;" & filePath, _ Destination:=ThisWorkbook.Sheets("Data").Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False End With
End Sub
6.2 Tạo báo cáo tổng hợp
Giả sử bạn có bảng bán hàng và muốn tổng hợp doanh thu theo tháng:
Sub TongHopDoanhThu() Dim src As Worksheet, dst As Worksheet Set src = ThisWorkbook.Sheets("Sales") Set dst = ThisWorkbook.Sheets("Report") Dim dict As Object Set dict = CreateObject("Scripting.Dictionary") Dim lastRow As Long, i As Long lastRow = src.Cells(src.Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow Dim thang As String, doanhThu As Double thang = Format(src.Cells(i, "B").Value, "yyyy-mm") doanhThu = src.Cells(i, "D").Value If dict.Exists(thang) Then dict(thang) = dict(thang) + doanhThu Else dict.Add thang, doanhThu End If Next i ' Ghi ra sheet Report dst.Range("A1:B1").Value = Array("Tháng", "Doanh thu") i = 2 Dim key As Variant For Each key In dict.Keys dst.Cells(i, 1).Value = key dst.Cells(i, 2).Value = dict(key) i = i + 1 Next key MsgBox "Hoàn thành tổng hợp!"
End Sub
6.3 Gửi email tự động bằng Outlook
Sub GuiMail() Dim OutlookApp As Object, Mail As Object Set OutlookApp = CreateObject("Outlook.Application") Set Mail = OutlookApp.CreateItem(0) ' 0 = olMailItem With Mail .To = "example@domain.com" .Subject = "Báo cáo ngày " & Format(Date, "dd/mm/yyyy") .Body = "Kính gửi, " & vbCrLf & vbCrLf & "Vui lòng xem báo cáo đính kèm." .Attachments.Add ThisWorkbook.FullName .Send ' Hoặc .Display để kiểm tra trước End With Set Mail = Nothing Set OutlookApp = Nothing
End Sub
7. Debug và xử lý lỗi
7.1 Sử dụng Breakpoints và Step Through

Có thể bạn quan tâm: Excel Vba Password Remover Xlsm: Hướng Dẫn Chi Tiết Từ A Đến Z Để Gỡ Mật Khẩu File Excel
- F9: Đặt breakpoint trên dòng code.
- F8: Bước qua từng dòng (Step Into).
- Shift + F8: Step Over (bỏ qua subroutine).
- Ctrl + Shift + F9: Xóa tất cả breakpoint.
7.2 Immediate Window
Gõ lệnh trực tiếp để kiểm tra giá trị biến:
? Worksheets("Sheet1").Range("A1").Value
7.3 Xử lý lỗi cơ bản
Sub ExampleError() On Error GoTo ErrHandler Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("NonExist") ' Gây lỗi 9 ws.Range("A1").Value = "Test" Exit Sub ErrHandler: MsgBox "Đã xảy ra lỗi: " & Err.Description, vbCritical Resume Next ' Hoặc Resume để quay lại dòng lỗi
End Sub
7.4 Log lỗi vào file
Sub LogError() On Error GoTo ErrHandler ' …code… Exit Sub
ErrHandler: Dim fso As Object, txt As Object Set fso = CreateObject("Scripting.FileSystemObject") Set txt = fso.OpenTextFile(ThisWorkbook.Path & "\ErrorLog.txt", 8, True) txt.WriteLine Now & " - " & Err.Number & " - " & Err.Description txt.Close MsgBox "Lỗi đã được ghi lại.", vbExclamation
End Sub
8. Tối ưu hoá mã nguồn
8.1 Tránh sử dụng .Select và .Activate
' Cách không tối ưu
Sheets("Data").Select
Range("A1").Select
Selection.Value = 123 ' Cách tối ưu
Sheets("Data").Range("A1").Value = 123
8.2 Sử dụng With…End With
With Worksheets("Report") .Range("A1").Value = "Tháng" .Range("B1").Value = "Doanh thu" .Columns("A:B").AutoFit
End With
8.3 Tắt tính năng tính toán và cập nhật màn hình khi chạy macro lớn
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' …code…
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
8.4 Sử dụng mảng thay vì truy cập ô lặp lại
Xem phần 5.3 Đọc và ghi dữ liệu nhanh để hiểu rõ hơn.
9. Tạo UserForm (form giao diện người dùng)
9.1 Thêm UserForm
- Trong VBE, Insert → UserForm.
- Kéo các điều khiển: TextBox, ComboBox, CommandButton, ListBox…
9.2 Mã mẫu cho UserForm
Giả sử tạo form nhập thông tin nhân viên:
' Trong UserForm1
Private Sub btnOK_Click() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Employees") Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 ws.Cells(lastRow, 1).Value = Me.txtID.Value ws.Cells(lastRow, 2).Value = Me.txtName.Value ws.Cells(lastRow, 3).Value = Me.cboDept.Value ws.Cells(lastRow, 4).Value = Me.txtSalary.Value MsgBox "Đã lưu thành công!", vbInformation Unload Me
End Sub Private Sub UserForm_Initialize() Me.cboDept.AddItem "Kế toán" Me.cboDept.AddItem "Bán hàng" Me.cboDept.AddItem "IT"
End Sub
9.3 Gọi UserForm từ macro
Sub ShowEmployeeForm() UserForm1.Show
End Sub
10. Giao tiếp với các ứng dụng Office khác
10.1 Đọc dữ liệu từ Word
Sub ReadWord() Dim wdApp As Object, wdDoc As Object Set wdApp = CreateObject("Word.Application") Set wdDoc = wdApp.Documents.Open("C:\Temp\Report.docx") Dim txt As String txt = wdDoc.Content.Text ThisWorkbook.Sheets("Data").Range("A1").Value = txt wdDoc.Close False wdApp.Quit
End Sub
10.2 Tạo PowerPoint slide từ Excel
Sub CreatePPT() Dim pptApp As Object, pptPres As Object, slide As Object Set pptApp = CreateObject("PowerPoint.Application") pptApp.Visible = True Set pptPres = pptApp.Presentations.Add Set slide = pptPres.Slides.Add(1, 12) ' 12 = ppLayoutTitleOnly slide.Shapes.Title.TextFrame.TextRange.Text = "Báo cáo bán hàng" ' Chèn hình ảnh từ Excel Dim rngChart As Range Set rngChart = ThisWorkbook.Sheets("Chart").ChartObjects(1).Chart rngChart.Export Filename:="C:\Temp\Chart.png", FilterName:="PNG" slide.Shapes.AddPicture "C:\Temp\Chart.png", False, True, 100, 150, -1, -1
End Sub
11. Sử dụng API và Windows DLL (nâng cao)
Đôi khi bạn cần truy cập chức năng hệ thống như lấy thông tin máy tính, clipboard, hoặc thời gian hệ thống.
11.1 Ví dụ: Lấy thời gian hệ thống bằng API GetSystemTime
Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer
End Type Private Declare PtrSafe Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) Sub ShowSystemTime() Dim st As SYSTEMTIME GetSystemTime st MsgBox "Thời gian hiện tại: " & st.wHour & ":" & st.wMinute & ":" & st.wSecond
End Sub
Lưu ý: Dùng
PtrSafecho phiên bản 64‑bit Office. Nếu bạn dùng 32‑bit, bỏPtrSafe.
11.2 Gọi hàm từ DLL tùy chỉnh
Declare PtrSafe Function AddNumbers Lib "MyMath.dll" (ByVal a As Long, ByVal b As Long) As Long Sub TestDLL() Dim result As Long result = AddNumbers(5, 7) MsgBox "Kết quả: " & result
End Sub
12. Bảo mật macro và ký số
- Macro Security: Vào File → Options → Trust Center → Trust Center Settings → Macro Settings. Chọn Disable all macros with notification để luôn được hỏi khi mở file có macro.
- Digital Signature: Để tránh cảnh báo “macro không đáng tin cậy”, bạn có thể ký macro bằng chứng chỉ tự ký (Self‑Signed) hoặc chứng chỉ của nhà cung cấp.
- Protect VBA Project: Trong VBE, Tools → VBAProject Properties → Protection. Đánh dấu “Lock project for viewing” và đặt mật khẩu.
13. Triển khai dự án thực tế: “Báo cáo doanh thu tự động”
13.1 Mô tả yêu cầu
- Thu thập dữ liệu bán hàng từ nhiều file CSV (mỗi file là một chi nhánh).
- Gộp dữ liệu vào một sheet “RawData”.
- Tính tổng doanh thu theo tháng và chi nhánh.
- Tạo biểu đồ và gửi email báo cáo cho quản lý.
13.2 Kiến trúc giải pháp
- Module ImportData: Đọc CSV, gộp.
- Module Summarize: Tính tổng, tạo pivot table.
- Module Report: Vẽ biểu đồ, lưu file PDF.
- Module Email: Gửi mail kèm PDF.
13.3 Mã nguồn chi tiết (rút gọn)
'--- Module ImportData ---
Option Explicit
Public Sub ImportAllCSV() Dim folderPath As String, fileName As String Dim wsRaw As Worksheet, lastRow As Long folderPath = "C:\Data\Sales\" Set wsRaw = ThisWorkbook.Sheets("RawData") wsRaw.Cells.Clear fileName = Dir(folderPath & ".csv") Do While fileName <> "" Call ImportSingleCSV(folderPath & fileName, wsRaw) fileName = Dir Loop MsgBox "Hoàn thành import tất cả file CSV."
End Sub Private Sub ImportSingleCSV(fullPath As String, ws As Worksheet) Dim qt As QueryTable Set qt = ws.QueryTables.Add(Connection:="TEXT;" & fullPath, _ Destination:=ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0)) With qt .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False .Delete End With
End Sub
'--- Module Summarize ---
Option Explicit
Public Sub CreatePivot() Dim wsRaw As Worksheet, wsRpt As Worksheet Dim pc As PivotCache, pt As PivotTable Set wsRaw = ThisWorkbook.Sheets("RawData") Set wsRpt = ThisWorkbook.Sheets("Report") wsRpt.Cells.Clear Set pc = ThisWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, _ SourceData:=wsRaw.Range("A1").CurrentRegion) Set pt = pc.CreatePivotTable( _ TableDestination:=wsRpt.Range("A3"), _ TableName:="PivotDoanhThu") With pt .PivotFields("Month").Orientation = xlRowField .PivotFields("Branch").Orientation = xlColumnField .PivotFields("Revenue").Orientation = xlDataField .PivotFields("Revenue").Function = xlSum End With MsgBox "Pivot table đã tạo."
End Sub
'--- Module Report ---
Option Explicit
Public Sub ExportPDF() Dim wsRpt As Worksheet, pdfPath As String Set wsRpt = ThisWorkbook.Sheets("Report") pdfPath = ThisWorkbook.Path & "\DoanhThu_" & Format(Date, "yyyymmdd") & ".pdf" wsRpt.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False MsgBox "File PDF đã lưu: " & pdfPath
End Sub
'--- Module Email ---
Option Explicit
Public Sub SendReport() Dim outlookApp As Object, mail As Object Dim pdfPath As String pdfPath = ThisWorkbook.Path & "\DoanhThu_" & Format(Date, "yyyymmdd") & ".pdf" If Dir(pdfPath) = "" Then Call ExportPDF Set outlookApp = CreateObject("Outlook.Application") Set mail = outlookApp.CreateItem(0) With mail .To = "manager@company.com" .Subject = "Báo cáo doanh thu ngày " & Format(Date, "dd/mm/yyyy") .Body = "Kính gửi Anh/Chị," & vbCrLf & vbCrLf & _ "Xin gửi kèm báo cáo doanh thu hôm nay." & vbCrLf & vbCrLf & "Trân trọng," .Attachments.Add pdfPath .Send End With MsgBox "Email đã được gửi.", vbInformation
End Sub
13.4 Hướng dẫn chạy
- ImportAllCSV → Đọc dữ liệu.
- CreatePivot → Tổng hợp.
- ExportPDF → Lưu PDF.
- SendReport → Gửi email.
Bạn có thể gắn các macro này vào Button trên sheet hoặc tạo Ribbon Custom để người dùng cuối chỉ cần một cú click.
14. Thực hành: Bài tập tự luyện
| Bài tập | Mô tả | Mục tiêu học |
|---|---|---|
| 1 | Tự động xoá các dòng trùng lặp trong một sheet. | Sử dụng Dictionary, vòng lặp. |
| 2 | Tạo UserForm để nhập danh sách khách hàng, lưu vào bảng. | Thiết kế giao diện, event handling. |
| 3 | Viết macro gửi email với nhiều người nhận (To, CC, BCC). | Làm việc với Outlook, mảng chuỗi. |
| 4 | Tích hợp API Google Maps để tính khoảng cách giữa 2 địa chỉ. | Gọi API HTTP, JSON parsing. |
| 5 | Tối ưu hoá macro xử lý 100.000 dòng bằng mảng. | Hiểu hiệu năng, tránh Select/Activate. |
15. Kết luận và các nguồn học tiếp
- Bạn đã nắm vững: môi trường VBA, cú pháp cơ bản, cách làm việc với dữ liệu, tạo báo cáo tự động, và cách debug.
- Tiếp theo: Hãy thực hành bằng các dự án thực tế trong công việc. Đừng ngại thử nghiệm các tính năng nâng cao như Class Modules, Event handling, hay API calls.
- Tài liệu tham khảo:
- Excel VBA Programming For Dummies – John Walkenbach (phiên bản tiếng Anh).
- Microsoft Docs: https://learn.microsoft.com/office/vba/api/overview/excel.
- Trang cộng đồng Stack Overflow, MrExcel, Excel Campus.
- Khóa học trực tuyến: Udemy, Coursera, LinkedIn Learning (tìm “Excel VBA for Beginners”).
Hãy nhớ rằng, VBA là công cụ “cầu nối” giữa con người và dữ liệu. Khi bạn thành thạo, bạn sẽ có khả năng biến những công việc tẻ nhạt thành những quy trình nhanh gọn, tiết kiệm thời gian và giảm thiểu lỗi. Chúc bạn thành công trên hành trình trở thành “VBA Ninja”!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
