Lấy tên sheet trong excel c

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

Lấy tên sheet trong excel c

Để 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

Lấy tên sheet trong excel c

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

  • #1

Ví dụ tôi có Sheet1 là "11.04.2008" Tại ô A1 tôi muốn đánh ngày 11.04.2008 nếu lấy tên của Sheet thì dùng cách nào. Xin các bác chỉ giúp. Cám ơn nhiều

Lấy tên sheet trong excel c

  • #2

Dùng hàm CELL("filename",A1) thử xem
Ra dc kết quả thì dùng các hàm xử lý chuổi cắt ra cái bạn cần!
Chú ý: Hàm này chỉ ra kết quả khi file đã dc lưu trên máy tính (1 file mới tinh sẽ ko ra gì cả)
ANH TUẤN

  • #3

Tôi muốn lấy tên Sheet là 11.04.2008 cơ. Bạn giúp tôi với

Lấy tên sheet trong excel c

  • #4

Thì tôi nói rồi đó, dùng hàm CELL... Có vấn đề gì chứ?
CELL xong rồi phải xử lý tiếp chứ đâu phải bạn gõ CELL("filename") 1 cái nó ra ngay đâu!
Bạn xem file đây!
ANH TUẤN

  • LayTenSheet.xls

    13.5 KB · Đọc: 640

Lấy tên sheet trong excel c

cadafi

Working with mind, Living with nature!

  • #5

Tôi muốn lấy tên Sheet là 11.04.2008 cơ. Bạn giúp tôi với

Nếu như giá trị của sheet của bạn luôn luôn định dạng theo kiểu này thì đơn giản nhiều:
Bạn xem thử xem, đâu có gì khó nào: =RIGHT(CELL("filename"),10)

Lấy tên sheet trong excel c

  • #6

Nếu như giá trị của sheet của bạn luôn luôn định dạng theo kiểu này thì đơn giản nhiều:
Bạn xem thử xem, đâu có gì khó nào: =RIGHT(CELL("filename"),10)

Đúng ra phải là =RIGHT(CELL("filename"),12) chứ nhỉ ? Nhưng dù như thế thì cũng ko tổng quát...
Tóm lại sẽ tùy tác giã quyết định lấy
ANH TUẤN

Lấy tên sheet trong excel c

cadafi

Working with mind, Living with nature!

  • #7

Ngoài ra ta còn nhận thấy khi dùng hàm cell("FileName") thì ký tự "]" luôn luôn xuất hiện và duy nhất
nên có thể xài như sau:

Mã:

 =mid(cell("FileName"),find("]",cell("filename"),1)+1,len(cell("FileName"))-find("]",cell("filename"),1))

  • #8

Thì tôi nói rồi đó, dùng hàm CELL... Có vấn đề gì chứ?
CELL xong rồi phải xử lý tiếp chứ đâu phải bạn gõ CELL("filename") 1 cái nó ra ngay đâu!
Bạn xem file đây!
ANH TUẤN

Bác Anh Tuấn ơi, làm thế nào mà trong file của bác chỉ cần đánh ShN là ra tên sheet vậy. Hay quá, nhưng Em làm file mới không được.

Lần chỉnh sửa cuối: 12/4/08

Lấy tên sheet trong excel c

  • #9

Bác Anh Tuấn ơi, làm thế nào mà trong file của bác chỉ cần đánh ShN là ra tên sheet vậy. Hay quá, nhưng Em làm file mới không được.

Bác vào menu Insert -> Name -> Define thì hiểu ngay thôi??

Không dùng marcro mà vẫn giải quyết được vấn đề thì Bác Tuấn là cao thủ đấy.

Lấy tên sheet trong excel c

  • #10

Các bạn chú ý thêm trong vụ lấy tên sheet này:
1> Có thể dùng CELL("Filename") ko có tham số, nhưng nếu như vậy thì khả năng cập nhật khi có thay đổi sẽ rất kém... Các bạn thử sẽ biết
2> Các bạn có thể nghiên cứu thêm để biết nguyên nhân tại sao tôi lại dùng CELL("filename",INDIRECT("A1")) mà ko phải là CELL("filename",A1)
ANH TUẤN

Lấy tên sheet trong excel c

  • #11

2> Các bạn có thể nghiên cứu thêm để biết nguyên nhân tại sao tôi lại dùng CELL("filename",INDIRECT("A1")) mà ko phải là CELL("filename",A1)
ANH TUẤN

1/ Em đoán mò thôi, Anh Tuấn lo xa, sợ ai đó "đờ le te" Cell A hay cột A thì công thức cũng không bị lỗi.

2/ Việc lấy tên Sheet hay tên Workbook cũng cần lưu ý là Workbook này đã save trên đĩa

3/ Vấn đề này các bạn search xem hình như trong 1 topic nào đó, Anh Levanduyet cũng đã chốt lại rất kỹ rồi : lấy tên Sheet, tên Workbook, lấy đường dẫn...

TDN

Lấy tên sheet trong excel c

  • #12

1/ Em đoán mò thôi, Anh Tuấn lo xa, sợ ai đó "đờ le te" Cell A hay cột A thì công thức cũng không bị lỗi.

TDN

Đó cũng là 1 nguyên nhân, nhưng cái tôi quan tâm nhất trong này tập trung ở 2 điểm:
1> Với CELL("filename",A1), công thức này mà gõ trực tiếp trên bảng tính thì ko có vấn đề, nhưng nếu bạn muốn add nó thành 1 name thì.. e rằng bắt đầu có vấn rồi đấy... Vì khi ấy công thức trong name sẽ tự động trở thành:
CELL("filename",Ten Sheet !A1)
Ví dụ là Cell("filename",Sheet1!A1)
Như vậy nó sẽ ko tồng quát và chỉ có tác dụng trong sheet 1... Nếu ta có 100 sheet chẳng lẽ add 100 name ?
Nếu dùng CELL("filename",INDIRECT("A1")) thì bất chấp tên sheet là gì, nó luôn sẽ ngầm hiểu là ta đang nói đến Active Sheet ---> 1 name cho toàn bộ sheet, bất kể là mấy sheet, bất chấp tên sheet là gì
2> Nếu ko dùng tham số đứng phía sau thì mặc nhiên nó cũng ngầm hiểu la ta đang nói đến Active Sheet nhưng có điều trong trường hợp này nó lại cập nhật kém
Tạm giãi thích theo cách mà tôi hiểu!
Mến
ANH TUẤN

  • #13

xin hỏi anh tuấn sao em làm như anh nói mà vẫn không ra tên sheet nhỉ
em thử luôn ví dụ của mọi người
cell("11.01.2008",indirect("A1"))
hàm như vậy mà vẫn không được

  • #14

xin hỏi anh tuấn sao em làm như anh nói mà vẫn không ra tên sheet nhỉ
em thử luôn ví dụ của mọi người
cell("11.01.2008",indirect("A1"))
hàm như vậy mà vẫn không được

Công thức của bạn chưa đúng, phải là :

=CELL("filename",indirect("A1"))

  • #15

Thì tôi nói rồi đó, dùng hàm CELL... Có vấn đề gì chứ?
CELL xong rồi phải xử lý tiếp chứ đâu phải bạn gõ CELL("filename") 1 cái nó ra ngay đâu!
Bạn xem file đây!
ANH TUẤN

Cảm ơn bác, gà quá may mà vẫn mò ra được công thức của bác ở đâu!

Lấy tên sheet trong excel c

  • #16

=CELL("filename",indirect("A1")) , cả nhà cho mình hỏi ngu tí . mọi người thêm "A1" nó la tên cố định hay là tên sheet của file cần làm.

Lấy tên sheet trong excel c

  • #17

Trả lời bạn, bạn nhập thử
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))

  • #18

Sao các thầy không dùng ActiveSheet.Name, ActiveSheet.Index nhỉ?

  • #19

Sao các thầy không dùng ActiveSheet.Name, ActiveSheet.Index nhỉ?

Viết thế là chỉ dùng để code.

  • #20

Sao các thầy không dùng ActiveSheet.Name, ActiveSheet.Index nhỉ?

Bạn đã thử chưa? . .