Trong môi trường làm việc với Excel, việc quản lý một workbook chứa nhiều sheet (tệp) thường xuyên gặp phải những thách thức liên quan đến việc theo dõi, kiểm tra, và liên kết dữ liệu giữa các sheet. Đặc biệt là khi bạn đang thiết kế một báo cáo phức tạp, một hệ thống tổng hợp dữ liệu, hoặc một macro tự động, việc có một danh sách đầy đủ các sheet trong workbook sẽ giúp bạn nhanh chóng kiểm tra tính toàn vẹn dữ liệu, thực hiện các thao tác lặp lại, hoặc tạo giao diện người dùng tùy chỉnh.
Dưới đây, chúng ta sẽ đi sâu vào các phương pháp lấy danh sách các sheet trong Excel, từ những cách đơn giản nhất sử dụng tính năng sẵn có của Excel, đến các giải pháp nâng cao với VBA, Power Query, và Office Scripts. Mỗi phương pháp sẽ được trình bày chi tiết, kèm theo ví dụ mã và lời khuyên thực tiễn để bạn có thể lựa chọn giải pháp phù hợp với nhu cầu và môi trường làm việc của mình.
Có thể bạn quan tâm: Cách Đưa Biểu Tượng Edin Ra Màn Hình Windows 10
1. Tại sao cần lấy danh sách các sheet trong Excel?
- Kiểm tra tính toàn vẹn dữ liệu: Nếu một sheet bị xóa hoặc đổi tên, các công thức, liên kết và macro có thể bị lỗi. Một danh sách cập nhật giúp phát hiện ngay những thay đổi không mong muốn.
- Tạo báo cáo tổng hợp: Khi bạn cần tổng hợp dữ liệu từ nhiều sheet vào một sheet báo cáo, danh sách giúp xác định linear path và tránh bỏ sót sheet.
- Tự động hóa: Trong việc viết macro hoặc script, bạn thường cần lặp qua từng sheet để thực hiện hành động như xóa, sao chép, hoặc chỉnh sửa.
- Dễ dàng tạo giao diện người dùng: Một drop-down list chứa tên sheet giúp người dùng chọn sheet mà không cần phải nhớ tên chính xác.
- Tối ưu participer: Khi workbook có quá nhiều sheet, người dùng có thể bị lạc vào các sheet không liên quan. Danh sách giúp tập trung vào các sheet quan trọng.
Có thể bạn quan tâm: Cách Làm Nhãn Vở Học Sinh Trên Excel
2. Phương pháp 1: Sử dụng tính năng Name Manager (Quản lý tên)
2.1. Giới thiệu
Excel có một chức năng quản lý tên (Name Manager) cho phép bạn tạo và quản lý các tên đặt cho ô, vùng, hoặc công thức. Mặc dù chủ yếu dùng để đặt tên cho vùng dữ liệu, nhưng chúng ta có thể tạo một tên cho một công thức trả về danh sách tên sheet.
2.2. Cách thực hiện
- Mở Name Manager:
Formulas→Name Manager. - Tạo tên mới: Click
New. - Điền thông tin:
- Name:
SheetList. - Refers to:
=GET.WORKBOOK(1). - Lưu và đóng.
2.3. Kết quả
- Khi bạn nhập vào ô bất kỳ:
=SheetList(nếu tính năng AutoComplete được bật), Excel sẽ hiển thị danh sách tên sheet trong workbook. - Bạn cũng có thể sử dụng công thức
=INDEX(SheetList,ROW(A1))để lấy từng tên sheet một theo vị trí.
2.4. Lưu ý
- Hàm
GET.WORKBOOKlà một hàm của Excel 4.0 Macro Workbook, vì vậy nó chỉ hoạt động trong Excel 2026 trở lên. - Nếu workbook được lưu ở định dạng
xlsm, bạn có thể sử dụng macro để cập nhật danh sách một cách tự động.
Có thể bạn quan tâm: Cách Làm Hiện Dòng Đã Ẩn Trong Excel: Hướng Dẫn Chi Tiết Và Các Phương Pháp Thủ Công
3. Phương pháp 2: Sử dụng VBA (Visual Basic for Applications)
VBA là công cụ mạnh mẽ nhất để thao tác với workbook. Dưới đây là một số đoạn mã VBA phổ biến để lấy danh sách sheet.
3.1. Lấy danh sách sheet vào một range
Sub GetSheetNames() Dim ws As Worksheet Dim i As Long i = 1 For Each ws In ThisWorkbook.Worksheets ThisWorkbook.Sheets("SheetList").Cells(i, 1).Value = ws.Name i = i + 1 Next ws
End Sub
Giải thích: Đoạn mã này lặp qua tất cả các sheet trong workbook hiện tại, ghi tên sheet vào một sheet tên SheetList (đảm bảo sheet này tồn tại). Nếu sheet SheetList chưa tồn tại, bạn có thể tạo ra trước.
3.2. Tạo một danh sách sheet trong một công thức
Đôi khi bạn muốn sử dụng công thức thay vì macro. Dưới đây là cách tạo một mảng động bằng cách sử dụng Application.Transpose:
Function GetSheetNamesArray() As Variant Dim ws As Worksheet Dim arr() As String Dim i As Long ReDim arr(1 To ThisWorkbook.Worksheets.Count) i = 1 For Each ws In ThisWorkbook.Worksheets arr(i) = ws.Name i = i + 1 Next ws GetSheetNamesArray = Application.Transpose(arr)
End Function
Bạn có thể sử dụng công thức Array trong Excel: =GetSheetNamesArray() và nó sẽ trả về một cột danh sách các tên sheet.
3.3. Lưu ý khi sử dụng VBA
- Bảo mật macro: Khi mở workbook có macro, Excel sẽ hỏi bạn có cho phép macro hay không. Đảm bảo bạn tin vào nguồn của workbook.
- Hiệu năng: Nếu workbook chứa hàng nghìn sheet, việc lặp qua tất cả có thể mất thời gian. Hãy cân nhắc tính năng
Application.ScreenUpdating = Falseđể giảm thiểu hiện tượng làm chậm. - Kích thước workbook: Việc lưu danh sách trong một sheet có thể làm tăng kích thước file. Hãy lưu ý.
4. Phương pháp 3: Sử dụng Power Query
Power Query (trong Excel 2026 trở lên và Office 365) cung cấp một giao diện mạnh mẽ để truy vấn dữ liệu từ nhiều nguồn, bao gồm cả các sheet trong workbook.
4.1. Lấy danh sách sheet bằng Power Query
- Mở Power Query:
Data→Get Data→From Other Sources→Blank Query. - Mở Advanced Editor và nhập mã M sau:
let Source = Excel.CurrentWorkbook(), #"Filtered Rows" = Table.SelectRows(Source, each Kind = "Sheet"), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Data", "Kind", "Hidden", "Merge"}), #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Name", "SheetName"}})
in #"Renamed Columns"
- Click Done. Kết quả là một bảng chứa tên tất cả sheet trong workbook.
4.2. Lưu ý
- Power Query chỉ liệt kê các sheet có dữ liệu (không trống). Nếu bạn muốn bao gồm cả sheet trống, hãy điều chỉnh mã M.
- Bạn có thể chuyển bảng này thành một sheet trong workbook bằng cách chọn
Close & Load.
4.3. S baff
Power Query rất thích hợp khi bạn muốn tạo một quy trình tự động và tái sử dụng. Ví dụ: bạn muốn tạo một báo cáo tổng hợp danh LPC… (các)
5. Phương pháp 4: Sử dụng Office Scripts trong Excel Online
Nếu bạn làm việc trong môi trường Office 365 Online, Office Scripts cung cấp cách viết script TypeScript để tự động hóa các tác vụ trong Excel.
5.1. Ví dụ Script
function main(workbook: ExcelScript.Workbook) { let worksheets = workbook.getWorksheets(); let names: string = ; worksheets.forEach(ws => { names.push(ws.getName()); }); // Ghi danh sách vào sheet "SheetList" (có thể tạo mới nếu chưa có) let sheet = workbook.getWorksheet("SheetList") || workbook.addWorksheet("SheetList"); sheet.getRange("A1:A" + names.length).setValues(names.map(name => name));
}
5.2. Cách chạy script

Có thể bạn quan tâm: Cách Lấy Chữ Cái Đầu Tiên Trong Excel – Hướng Dẫn Chi Tiết Và Ứng Dụng Thực Tế
- Truy cập
Automate→New Script. - Dán mã vào, lưu, và chạy.
5.3. Ưu điểm
- Không cần bật macro trong Excel Desktop.
- Giao diện trực quan và dễ dàng chia sẻ script trong tổ chức.
6. Phương pháp 5: Sử dụng Công thức trong Excel (không VBA)
Đối với những người không muốn sử dụng VBA, ta có thể dùng công thức array kết hợp với INDEX, ROW, và INDIRECT.
6.1. Công thức
=INDEX(GET.WORKBOOK(1),ROW(A1))
GET.WORKBOOK(1)trả về danh sách toàn bộ tên sheet.INDEX(...,ROW(A1))lấy phần tử thứROW(A1)(tức là 1).- Kéo công thức xuống để lấy các tên sheet tiếp theo.
6.2. Thực hiện
- Nhập công thức vào ô A1.
- Kéo xuống A2, A3, … cho tới khi công thức trả về lỗi
#SPILL!hoặc#REF!. Khi đó, bạn đã lấy hết danh sách.
6.3. Lưu ý
- Hàm
GET.WORKBOOKchỉ hỗ trợ trong Excel 4 esan. - Khi workbook có sheet trống, công thức vẫn hiển thị tên.
7. Phương pháp 6: Dùng Macro Recorder để tạo danh sách
Nếu bạn không quen với việc viết VBA, bạn có thể dùng Macro Recorder để ghi lại các thao tác và sau đó chỉnh sửa mã.
7.1. Bước thực hiện
- Mở
Developer→Record Macro. - Thực hiện các thao tác: click vào từng sheet, ghi chú tên vào một sheet mới.
- Dừng ghi lại.
- Mở
Visual Basic Editor→VBAProject→Modules→ chỉnh sửa mã.
7.2. Ví dụ mã
Macro Recorder thường tạo ra mã tương tự như:
Sub RecordSheetNames() Dim ws As Worksheet Dim i As Long i = 1 For Each ws In Worksheets Worksheets("SheetList").Cells(i, 1).Value = ws.Name i = i + 1 Next ws
End Sub
8. Những lưu ý quan trọng khi làm việc với danh sách sheet
| Tình huống | Lưu ý | Giải pháp |
|---|---|---|
| Workbook có sheet trống | Một số phương pháp (Power Query) không hiển thị sheet trống. | Sử dụng VBA hoặc lọc trong Power Query để bao gồm sheet trống. |
| Đổi tên sheet | Danh sách sẽ không tự cập nhật trừ khi macro chạy lại. | Thêm sự kiện Workbook_Sheet seront renamed trong VBA để tự cập nhật. |
| Độ lớn workbook | Lặp qua hàng nghìn sheet có thể chậm. | Kiểm tra ThisWorkbook.Worksheets.Count trước khi thực hiện. |
| Bảo mật macro | Macro có thể bị chặn bởi cài đặt bảo mật. | Gửi workbook dưới dạng xlsm và yêu cầu người dùng bật macro. |
| Sao lưu dữ liệu | Khi tạo danh sách trong một sheet, dữ liệu có thể bị ghi đè. | Sử dụng sheet tĩnh, đặt tên SheetList và bảo vệ sheet. |
| Đa ngôn ngữ | Đôi khi tên sheet có ký tự đặc biệt. | Sử dụng CStr(ws.Name) trong VBA để xử lý. |
9. Ứng dụng thực tế: Tạo Drop-Down List chọn sheet
Khi làm việc với các công thức tham chiếu sheet, một drop-down list giúp người dùng nhanh chóng chọn sheet mà không Hindi.
9.1. Bước thực hiện
- Tạo danh sách: Sử dụng một trong các phương pháp ở trên để ghi danh sách sheet vào một vùng dữ liệu, ví dụ
A1:A10trong sheetSheetList. - Định danh vùng: Đánh dấu vùng
A1:A10và đặt tên vùngSheetNames(điều kiện:Formulas→Name Manager→New). - Tạo drop-down:
- Chọn ô muốn hiển thị drop-down, ví dụ
B1trong sheetReport. - Đi tới
Data→Data Validation→List. - Trong trường
Source, nhập=SheetNames. - Sử dụng: Khi người dùng chọn tên sheet, bạn có thể dùng công thức
INDIRECTđể lấy dữ liệu.
9.2. Công thức tham chiếu
=INDIRECT("'" & B1 & "'!A1")
B1chứa tên sheet đã chọn.- Công thức sẽ trả về giá trị ô
A1trong sheet đã chọn.
10. Tối ưu hóa và bảo trì
10.1. Tự động cập nhật danh sách
- Sự kiện
Workbook_SheetActivate: Khi người dùng chuyển sheet, macro tự cập nhật danh sách. - Sự kiện
Workbook_SheetChange: Khi có thay đổi tên sheet, macro tự cập nhật.
Private Sub Workbook_SheetActivate(ByVal Sh As Object) Call UpdateSheetList
End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Call UpdateSheetList
End Sub Sub UpdateSheetList() ' Mã lấy danh sách như ở phần 3.1
End Sub
10.2. Định dạng và bảo vệ sheet danh sách
- Đặt sheet
SheetListlàm protected để tránh người dùng vô tình chỉnh sửa. - Sử dụng
SetProtectRangetrong VBA để bảo vệ vùng danh sách.
10.3. Kiểm tra lỗi
- Khi có sheet bị xóa, macro cần xử lý lỗi
Subscript out of range. - Sử dụng
On Error Resume Nextkhi cần bỏ qua lỗi.
11. Bài tập thực hành
- Tạo một workbook có 5 sheet:
Data1,Data2,Data3,Summary,Report. - Viết macro
ListSheetsđể ghi danh sách các sheet vào sheetSummarytrong cột A. - Tạo drop-down trong sheet
Reportđể chọn sheet tên từ danh sách. - Sử dụng công thức
INDIRECTtrongReportđể hiển thị giá trị ôB2của sheet được chọn.
Tip: Khi hoàn thành, lưu file dưới định dạng
.xlsmvà bật macro.
12. Kết luận
Lấy danh sách các sheet trong ака Excel là một thao tác cơ bản nhưng vô cùng quan trọng, đặc biệt trong môi trường làm việc với dữ liệu phức tạp. Dựa vào nhu cầu và môi trường làm việc (Excel Desktop, Office 365 Online, môi trường bảo mật cao), bạn có thể chọn một trong các phương pháp sau:
- GET.WORKBOOK (công thức) – nhanh nhưng hạn chế.
- VBA – mạnh mẽ, linh hoạt, nhưng yêu cầu bật macro.
- Power Query – thích hợp cho quy trình tự động và dữ liệu lớn.
- Office Scripts – giải pháp hiện đại trong Excel Online.
- Macro Recorder – nhanh chóng cho người mới.
Bằng cách kết hợp các công cụ này, bạn có thể tự động hóa quy trình kiểm tra, tổng hợp và thao tác dữ liệu, từ đó nâng cao hiệu suất làm việc và giảm thiểu sai sót.
Lời khuyên cuối cùng: Hãy luôn ghi lại các macro và script trong một module riêng, đặt tên rõ ràng, và lưu trữ tại một vị trí có thể truy cập được. Điều này không chỉ giúp bạn dễ dàng bảo trì, mà còn acht bảo vệ dữ liệu khi bạn chuyển đổi giữa các phiên bản hoặc chia sẻ workbook với đồng nghiệp.

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ẻ.
