Cái này có thể dùng hàm của Excel, còn đây là hàm tự tạo:NHG đã viết:Mình muốn tạo một hàm trả về tên của Sheet hiện hành
Ví dụ: Trong ô A1 của Sheet "Tong_hop" mình đánh =Sheet() thì sẽ trả về giá trị "Tong_hop"
Function Sheet() As String
Sheet = ActiveSheet.Name
End Function
Bạn xem bài của Bác Anhtuan1066 nhé.NHG đã viết:Mình muốn tạo một hàm trả về tên của Sheet hiện hành
Ví dụ: Trong ô A1 của Sheet "Tong_hop" mình đánh =Sheet() thì sẽ trả về giá trị "Tong_hop"
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1),1))
Tất nhiên có sự khác nhau chứ... Bài viết của tôi là lấy tên toàn bộ các sheet có trong Workbook, dùng macro4 để giải quyết thật sự quá dễ, còn mà dùng CELL ấy hả... e rằng còn lâu...tedaynui đã viết:Ai dà,
Cái này mà dùng tới VBA thì cũng gọn nhưng cũng giống giết gà mà dùng dao mổ trâu í.
Các bác thử công thức này xem thế nào nhé
Không phải đặt Name mà cũng chẳng Macro4 gì, hi hiPHP:=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1),1))
TDN
He... he... Hơi mâu thuẩn... lấy tên sheet mắc mớ gì đến dử liệu nhiều hay ít? Bạn nói đi! Nếu cảm thấy ko thích lắm công thức thì dùng cái Function của thầy Long, ngược lại thì dùng cái của thầy Phước...NHG đã viết:Hờ hờ, sao bác biết em không thích dùng công thức, em dùng các hàm của Excel cũng tạm ổn nhưng không thích dùng hàm lắm vì dữ liệu của em toàn >10.000 dòng, dùng hàm thì máy e treo luôn, nhưng bây giờ mới tập tẹ VBA nên còn gà vịt lắm, mong các bác giúp đỡ
NHG đã viết:Hờ hờ, sao bác biết em không thích dùng công thức, em dùng các hàm của Excel cũng tạm ổn nhưng không thích dùng hàm lắm vì dữ liệu của em toàn >10.000 dòng, dùng hàm thì máy e treo luôn, nhưng bây giờ mới tập tẹ VBA nên còn gà vịt lắm, mong các bác giúp đỡ
Function Sheetname()
Application.Volatile
Sheetname = Application.Caller.Parent.Name
End Function
Function SName()
'Trả về tên của ActiveSheet
Application.Volatile
SName = ActiveSheet.Name
End Function
=MID(CELL("filename"),FIND("]",CELL("filename"))+1,255)
=MID(CELL("filename"),FIND("[",CELL("filename"))+1,(FIND("]",CELL("filename"))+1)-FIND("[",CELL("filename"))-2)
=CELL("filename")
=MID(CELL("filename"),1,FIND("[",CELL("filename"))-1)
=MID(CELL("filename"),FIND("]",CELL("filename"))+1,255)
=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1),1))
=MID(CELL("filename"),FIND("[",CELL("filename"))+1,(FIND("]",CELL("filename"))+1)-FIND("[",CELL("filename"))-2)
=CELL("filename")
=MID(CELL("filename"),1,FIND("[",CELL("filename"))-1)
Em dùng hàm cell để lấy tên sheet nhưng không được vì gặp cái lỗi này: nếu cùng lúc dùng hàm đó trên nhiều sheet thì nó cho ra 1 cái tên duy nhất. Ví dụ cả sheet 1 và sheet 2 em đều dùng hàm cell("filename"). Nếu công thức nào gõ sau thì nó sẽ hiện tên của sheet đó cho cả 2. Mình chưa bít xử lý sao?Tóm lại:
http://support.microsoft.com/kb/213475
http://www.exceltip.com/st/Cell_Function_Returns_Sheet_Name,_Workbook_Name_and_Path/180.html
http://www.giaiphapexcel.com/forum/showthread.php?t=7999
Hoặc:Mã:Function Sheetname() Application.Volatile Sheetname = Application.Caller.Parent.Name End Function Function SName() 'Trả về tên của ActiveSheet Application.Volatile SName = ActiveSheet.Name End Function
Lấy tên sheet:
Lấy tên workbook:Mã:=MID(CELL("filename"),FIND("]",CELL("filename"))+1,255)
Lấy địa chỉ đường dẫn và tên workbook:Mã:=MID(CELL("filename"),FIND("[",CELL("filename"))+1,(FIND("]",CELL("filename"))+1)-FIND("[",CELL("filename"))-2)
Lấy địa chỉ đường dẫn:Mã:=CELL("filename")
Mã:=MID(CELL("filename"),1,FIND("[",CELL("filename"))-1)
Lvd
Thay vì dùng CELL("filename") bạn sửa lại thành CELL("filename", A1) nhéEm dùng hàm cell để lấy tên sheet nhưng không được vì gặp cái lỗi này: nếu cùng lúc dùng hàm đó trên nhiều sheet thì nó cho ra 1 cái tên duy nhất. Ví dụ cả sheet 1 và sheet 2 em đều dùng hàm cell("filename"). Nếu công thức nào gõ sau thì nó sẽ hiện tên của sheet đó cho cả 2. Mình chưa bít xử lý sao?
Vấn đề là bạn muốn dùng nó vào việc gì chứ?Ah, cho mình hỏi thêm chút, mình chưa dùng VBA lần nào. Ở trên mình có viết thử vài dòng lấy tên sheet, mà viết xong, sao mình không dùng được nhỉ?