Câu trả lời:
Microsoft giải thích bạn có thể cần sử dụng công thức mảng để lấy tên trang tính:
Để hiển thị tên của bảng tính hiện tại, hãy nhập công thức sau dưới dạng công thức mảng
=RIGHT(CELL("filename"),LEN(CELL("filename"))- MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"), ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))
trong đó "tên tệp" theo nghĩa đen là từ "tên tệp", trong dấu ngoặc kép.
LƯU Ý: Bạn phải nhập công thức này dưới dạng công thức mảng. Để nhập công thức dưới dạng công thức mảng, nhấn CTRL + SHIFT + ENTER.
Cũng lưu ý rằng điều này rất phụ thuộc vào nền tảng. Trên máy Mac, bạn sẽ cần các công thức khác nhau , vì nó sử dụng các dấu tách đường dẫn khác nhau. Ngoài ra, nó có thể hoạt động khác nhau trong OpenOffice.org và các lựa chọn thay thế khác. Và khi sử dụng trên một sổ làm việc chưa được lưu, bạn có thể nhận được #VALUE!
thay thế.
Khi không sử dụng công thức mảng, bạn có thể lấy tên của sổ làm việc (phần cuối của tên tệp của nó), như vậy:
Để chỉ trả lại tên của sổ làm việc, như được sử dụng trong công thức sau:
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Đây là một công thức.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Đầu tiên lưu tệp của bạn hơn là nhập công thức này bất cứ nơi nào
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
thay vì ,
khi tách các phần tử của hàm
Đã thử nghiệm và hoạt động trên M $ EXCEL và LibreScript CALC (Công thức bằng tiếng Tây Ban Nha):
=EXTRAEB(CELDA("filename");SI(ESERROR(1+HALLAR("]";CELDA("filename")));SI(ESERROR(3+HALLAR("'#$";CELDA("filename")));0;3+HALLAR("'#$";CELDA("filename")));1+HALLAR("]";CELDA("filename")));LARGO(CELDA("filename")))
Lưu ý: Đây là một công thức lớn để phù hợp với các công thức khác hoặc chỉ sử dụng một ô.
Tôi nghĩ bằng tiếng Anh: EXTRAEB sẽ là MIDB, CELDA sẽ là CELL, SI sẽ là IF, ESERROR sẽ là ISERROR, HALLAR sẽ là TÌM và LARGO sẽ là LENGTH.
Sẽ tốt hơn nhiều nếu bạn chia công thức lớn như vậy thành nhiều ô (để tránh gọi cùng một số lần):
=CELDA("filename")
=1+HALLAR("]";<CellReferenceFor_1>)
=3+HALLAR("'#$";<CellReferenceFor_1>)
=ESERROR(<CellReferenceFor_2>;)
=ESERROR(<CellReferenceFor_3>;)
=EXTRAEB(<CellReferenceFor_1>;SI(<CellReferenceFor_4>;SI(<CellReferenceFor_5>;0;<CellReferenceFor_5>);<CellReferenceFor_4>);LARGO(<CellReferenceFor_1>))
Tại sao việc lấy tên trang tính lại quá phức tạp, trong khi việc lấy vị trí trang tính trong danh sách trang tính lại quá dễ dàng trên bảng tính hiện đại (cảnh báo, trên EXCEL 2000 thì cái này không tồn tại): =HOJA(A1)
Và một điều nữa: tại sao các chức năng được gọi là khác nhau trên mỗi ngôn ngữ, nếu tôi có M $ EXCEL là tiếng Tây Ban Nha và CALC bằng tiếng Anh (không nói tiếng Nga, tiếng Chinesse, v.v.) thì sao? Thật là một công việc khó khăn, cần phải nhớ tất cả các tên hàm trên nhiều thành ngữ.
Trong nội bộ, chúng được lưu với các tên đặc biệt, ví dụ =SHEET(A1)
như =HOJA(A1)
được lưu như =_xlfn.SHEET(A1)
; Tại sao không sử dụng trên tất cả các thành ngữ cuối cùng?.
Hoặc nói theo một hình thức khác: tại sao nếu tôi đặt nó bằng tiếng Anh thì nó nói nó không phải là tên hàm vaild (nếu CALC / M $ EXCEL không có trong tiếng Anh)?
Với các hàm M $ ACCESS và SQL không xảy ra, trên phiên bản tiếng Tây Ban Nha tôi có thể nhập chúng bằng tiếng Tây Ban Nha ESNULO()
và tiếng Anh ISNULL()
và nó sẽ thực hiện chính xác.
Nếu nó quá phức tạp để chấp nhận cả hai; tốt, sau đó chỉ chấp nhận một, không nội địa hóa để nhân lên các thành ngữ!
Chà, đặt lại câu hỏi, mẹo tôi sử dụng cho công thức khổng lồ đó là kiểm tra xem ]
có tồn tại (M $ EXCEL) hay không, kiểm tra nếu có tồn tại '#$
(LibreOffice CALC) trong khi trích xuất tên từ đó =CELL("filename")
. Thật là kỳ lạ!
Một lần nữa với những câu hỏi mỉa mai: Tại sao họ lại thêm mà =SHEET(A1)
không =SHEETNAME(A1)
? Nó làm cho tất cả chúng ta làm việc chăm chỉ hơn!
Trên LibreOffice, tôi đã trộn công thức của bạn vào phần sau và số 20 về cuối sẽ là giới hạn cho các ký tự sẽ được hiển thị:
= (SUBSTITUTE (MID ((RIGHT (CELL ("tên tệp"), LEN (CELL ("tên tệp")) - MAX (IF (KHÔNG (ISERR (TÌM KIẾM ("\", CELL ("tên tệp"), ROW (1 : 255: 255)))), TÌM KIẾM ("\", CELL ("tên tệp"), ROW (1: 255: 255)))))), TÌM ("# $", (ĐÚNG (CELL ("tên tệp "), LEN (CELL (" tên tệp ")) - MAX (NẾU (KHÔNG (ISERR (TÌM KIẾM (" \ ", CELL (" tên tệp "), ROW (1: 255: 255)))), TÌM KIẾM (" \ ", CELL (" tên tệp "), ROW (1: 255: 255))))))) + 2.20), 1,1))