Respostas:
Microsoft explica talvez seja necessário usar uma fórmula de matriz para obter o nome da planilha:
Para exibir o nome da planilha atual, digite a seguinte fórmula como uma fórmula de matriz
=RIGHT(CELL("filename"),LEN(CELL("filename"))- MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"), ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))
onde "nome do arquivo" é literalmente a palavra "nome do arquivo", entre aspas.
NOTA: Você deve inserir essa fórmula como uma fórmula de matriz. Para inserir uma fórmula como uma fórmula de matriz, pressione CTRL + SHIFT + ENTER.
Observe também que isso é muito dependente da plataforma. Em um Mac, você precisará fórmulas diferentes , como ele usa diferentes separadores de caminho. Além disso, pode funcionar de forma diferente no OpenOffice.org e em outras alternativas. E ao usar uma pasta de trabalho não salva, você pode #VALUE!
em vez de.
Quando não estiver usando uma fórmula de matriz, você poderá obter o nome da pasta de trabalho (a última parte do nome do arquivo), assim:
Para retornar apenas o nome da pasta de trabalho, como usado na seguinte fórmula:
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Aqui está uma fórmula.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Primeiro salve seu arquivo do que digite esta fórmula em qualquer lugar
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
ao invés de ,
ao separar os elementos de uma função
Testado e funciona em M $ EXCEL e LibreOffice CALC (Formula está em espanhol):
=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")))
Nota: É uma fórmula enorme para caber dentro de outras fórmulas ou usar apenas uma célula.
Eu penso em inglês: EXTRAEB seria MIDB, CELDA seria CELL, SI seria IF, ESERROR seria ISERROR, HALLAR seria FIND e, LARGO seria LENGTH.
É muito melhor dividir uma fórmula tão grande em várias células (para evitar chamar as mesmas várias vezes):
=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>))
Por que diabos obter o nome da planilha é tão complicado, enquanto obter a posição da planilha na lista de planilhas é tão fácil na planilha moderna (aviso, no EXCEL 2000, esta não existe): =HOJA(A1)
E outra coisa: por que funções são chamadas diferentes em cada idioma, e se eu tiver M $ EXCEL é espanhol e CALC em inglês (para não dizer russo, chinesse, etc)? que trabalho árduo, precisa lembrar de todos os nomes de função em multiplicar expressões idiomáticas.
Internamente, eles são salvos com nomes específicos, por exemplo =SHEET(A1)
isso é o mesmo que =HOJA(A1)
é salvo como =_xlfn.SHEET(A1)
; Por que não usar em todos os idiomas o último?
Ou disse em outra forma: por que se eu colocá-lo em Inglês, ele diz que não é o nome da função vaild (se CALC / M $ EXCEL não é em Inglês)?
Com M $ ACCESS e funções SQL isso não acontece, na versão em espanhol eu posso digitá-las em espanhol ESNULO()
e em inglês ISNULL()
e leva isso corretamente.
Se é muito complicado aceitar ambos; bem, então aceite apenas um, não localize para multiplicar idoms!
Will, voltando a questionar, o truque que eu uso nessa fórmula enorme é testar se ]
existe (M $ EXCEL), caso contrário, teste se existir '#$
(LibreOffice CALC) ao extrair o nome de =CELL("filename")
. É tão estranho!
Mais uma vez com perguntas sarcásticas: por que eles adicionaram =SHEET(A1)
e não =SHEETNAME(A1)
? Isso faz com que todos nós trabalhemos mais duro!
No LibreOffice, misturei sua fórmula com o seguinte, e o número 20 no final será o limite dos caracteres que serão exibidos:
= (SUBSTITUTO (MID ((DIREITA (CELL ("nome do arquivo"), LEN (CELL ("nome do arquivo")) - MAX (SE (NÃO (ISERR (SEARCH ("\", CELL ("nome do arquivo"), ROW (1 : 255: 255)))), SEARCH ("\", CELL ("nome do arquivo"), ROW (1: 255: 255)))))), FIND ("# $", (RIGHT (CELL ("nome do arquivo "), LEN (CELL (" nome do arquivo ")) - MAX (SE (NÃO (ISERR (SEARCH (" \ ", CELL (" nome do arquivo "), ROW (1: 255: 255)))), SEARCH (" \ ", CELL (" nome do arquivo "), ROW (1: 255: 255))))))) + 2,20), 1,1))