Відповіді:
Microsoft пояснює, що вам може знадобитися використовувати формулу масиву, щоб отримати назву аркуша:
Щоб відобразити ім'я поточного робочого аркуша, введіть наступну формулу як формулу масиву
=RIGHT(CELL("filename"),LEN(CELL("filename"))- MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"), ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))
де "ім'я файлу" - це буквально слово "ім'я файлу", у лапках.
ПРИМІТКА. Ви повинні ввести цю формулу як формулу масиву. Щоб ввести формулу як формулу масиву, натисніть CTRL + SHIFT + ENTER.
Також зауважте, що це дуже залежить від платформи. На Mac вам знадобляться різні формули , оскільки він використовує різні роздільники шляхів. Крім того, це може працювати по-різному на OpenOffice.org та інших альтернативах. І коли ви користуєтеся збереженою робочою книжкою, ви можете отримати #VALUE!
замість цього.
Якщо не використовується формула масиву, ви можете отримати ім’я робочої книги (остання частина її імені файлу), наприклад:
Щоб повернути назву лише робочої книги, як використовується у такій формулі:
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Ось формула.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Спочатку збережіть свій файл, ніж будь-де введіть цю формулу
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
замість того, ,
щоб розділяти елементи функції
Випробуваний і працює на M $ EXCEL та LibreOffice CALC (Формула - іспанською мовою):
=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")))
Примітка. Це одна величезна формула, щоб вміститись у інші формули або використовувати лише одну клітинку.
Я думаю, що англійською мовою: EXTRAEB буде MIDB, CELDA буде CELL, SI буде, якщо IFER, ESERROR буде ISERROR, HALLAR буде ЗНАЙДЕНО, а LARGO буде LENGTH.
Набагато краще, якщо ви поділите таку величезну формулу на кілька комірок (щоб уникнути виклику одних і тих же кількох разів):
=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>))
Чому на пеклі отримати назву аркуша настільки складно, тоді як отримати положення аркуша у списку аркушів так просто на сучасній електронній таблиці (попередження, на EXCEL 2000 цього не існує): =HOJA(A1)
І ще: чому функції називаються різними на кожній мові, що робити, якщо у мене M $ EXCEL - це іспанська та CALC англійською (не кажучи російською, китайською тощо)? яка важка робота, потрібно запам’ятати всі назви функцій на множинні ідіоми.
Всередині них зберігаються спеціальні імена, наприклад =SHEET(A1)
, це те саме, що =HOJA(A1)
зберігається =_xlfn.SHEET(A1)
; чому б не використати у всіх ідіомах останній ?.
Або сказано в іншій формі: чому, якщо я поклав це англійською мовою, це скаже, що це не найменування функції vaild (якщо CALC / M $ EXCEL не на англійській мові)?
З функціями M $ ACCESS та SQL, що не відбувається, в іспанській версії я можу їх набрати на іспанській ESNULO()
та англійській мовах, ISNULL()
і це сприймає правильно.
Якщо занадто складно прийняти обидва; ну тоді прийміть лише одне, не локалізуйте для множення ідомів!
Що ж, повертаючись до питання, хитрість, яку я використовую у цій величезній формулі, полягає у тестуванні, чи ]
існує (M $ EXCEL), інакше тестування, якщо існує '#$
(LibreOffice CALC), витягуючи ім'я з =CELL("filename")
. Це так дивно!
Знову з саркастичними питаннями: Чому вони додавали, =SHEET(A1)
а ні =SHEETNAME(A1)
? Це змушує всіх нас важче працювати!
У LibreOffice я змішав вашу формулу з наступною, і число 20 до кінця буде обмеженням для символів, які будуть відображатися:
= (SUBSTITUTE (MID ((ВПРАВО (CELL ("ім'я файлу"), LEN (CELL ("ім'я файлу")) - MAX (АБО (НЕ (ISERR (SEARCH ("\", CELL ("ім'я файлу"), ROW (1 : 255: 255)))), SEARCH ("\", CELL ("ім'я файлу"), ROW (1: 255: 255)))))), FIND ("# $", (RIGHT (CELL ("ім'я файлу) "), LEN (CELL (" ім'я файлу ")) - MAX (АБО (НЕ (ISERR (SEARCH (" \ ", CELL (" ім'я файлу "), ROW (1: 255: 255)))), SEARCH (" \ ", CELL (" ім'я файлу "), ROW (1: 255: 255))))))) + 2,20), 1,1))