Cách lấy danh sách các sheet trong Exel tự động

Cách lấy danh sách các sheet trong Exel tự động

Tháng Năm 31, 2021 Off By Anh bán hàng

Trong quá trình xử lý một file nhiều sheet, việc lấy tên và danh sách các sheet giúp kiểm tra và quản lý các sheet dễ dàng hơn, đặc biệt là khi bạn làm việc và tổng hợp dữ liệu từ nhiều sheet. Việc lấy danh sách các sheet một cách tự động giúp tiết kiệm thời gian và công sức của bạn.

Lấy tên sheet hiện tại

Cách lấy danh sách các sheet trong Exel tự động

Để lấy tên sheet hiện tại bạn dùng hàm sau:

=MID(CELL(“filename”), FIND(“]”,CELL(“filename”))+1, LEN(CELL(“filename”))-FIND(“]”, CELL(“filename”)))

Hoặc hàm sau:

=RIGHT(CELL(“filename”), LEN(CELL(“filename”))-FIND(“]”,CELL(“filename”)))

Để liệt kê các sheet có trong file exel một cách tự động

Để liệt kệ tự động thì chỉ có một cách là bạn sử dụng VBA. Để mở VBA thì bấm tổ hợp phím: ALT+F11

Hoặc mở Visual Basic trên thẻ Developer.

Cách mở thẻ Developer như hướng dẫn tại đây của Microsoft Office

 

Cách lấy danh sách các sheet trong Exel tự động

cửa sổ VBA hiện ra. Các bạn chọn thẻ Insert => Module 

Sau đó bạn copy mã sau vào và bấm Run để chạy

Private Sub CreateTableOfContents()
Dim wsSheet As Worksheet
Dim ws As Worksheet
Dim Counter As Long

On Error Resume Next
Set wsSheet = Sheets("Mucluc")
'Kiem tra su ton tai cua Sheet
On Error GoTo 0
If wsSheet Is Nothing Then
'Neu chua co thi them vao vi tri dau tien cua Workbook
Set wsSheet = ActiveWorkbook.Sheets.Add(Before:=Worksheets(1))
wsSheet.Name = "Mucluc"
End If

With wsSheet
.Cells(2, 1) = "DANH SACH CAC SHEET"
.Cells(2, 1).Name = "Index"
.Cells(4, 1).Value = "STT"
.Cells(4, 2).Value = "Ten Sheet"
End With

'Merge Cell
With Range("A2:B2")
.Merge
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With

'Set ColumnWidth
With Columns("A:A")
.ColumnWidth = 8
.HorizontalAlignment = xlCenter
End With

With Range("A4")
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With

Columns("B:B").ColumnWidth = 30
With Range("B4")
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With

Counter = 1
For Each ws In Worksheets
If ws.Name <> wsSheet.Name Then
'Gan gia tri cot thu tu
wsSheet.Cells(Counter + 4, 1).Value = Counter
'Tao lien ket
wsSheet.Hyperlinks.Add Anchor:=wsSheet.Cells(Counter + 4, 2), _
Address:="", _
SubAddress:=ws.Name & "!A1", _
ScreenTip:=ws.Name, _
TextToDisplay:=ws.Name
'Them nut Quay ve Sheet Muc luc tai moi Sheet
With ws
.Hyperlinks.Add Anchor:=.Range("H1"), Address:="", SubAddress:="Index", TextToDisplay:="Quay ve"
End With
Counter = Counter + 1
End If
Next ws
Set xlSheet = Nothing
End Sub