É possível obter o nome da planilha?

12

Como posso obter o nome da planilha em uma célula? (Eu tenho mais de uma folha, eu quero pegar a corrente em cada folha)

    
por BrunoLM 07.12.2010 / 19:57

5 respostas

7

A explicação da Microsoft pode precisar de uma fórmula de matriz para obter o nome da folha:

To display the name of the current worksheet, type the following formula as an array formula

=RIGHT(CELL("filename"),LEN(CELL("filename"))-
  MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"),
  ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))

where "filename" is literally the word "filename", in quotation marks.

NOTE: You must input this formula as an array formula. To input a formula as an array formula, press CTRL+SHIFT+ENTER.

Observe também que isso depende muito da plataforma. Em um Mac, você precisará de fórmulas diferentes , pois ele usa diferentes separadores de caminho. Além disso, pode funcionar de forma diferente no OpenOffice.org e em outras alternativas. E, quando você estiver usando uma pasta de trabalho não salva, poderá receber #VALUE! .

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:

To return the name of the workbook only, like used in the following formula:

=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1,
  SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
    
por 09.12.2010 / 10:20
7

Aqui está uma fórmula.

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)

( Link para mais informações )

    
por 07.12.2010 / 20:28
2

Primeiro, salve seu arquivo e digite esta fórmula em qualquer lugar

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
    
por 18.11.2014 / 12:57
0

Testado e funciona em M $ EXCEL e no LibreOffice CALC (a fórmula 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 COMPRIMENTO.

É muito melhor dividir uma fórmula tão grande em várias células (para evitar chamar as mesmas várias vezes):

  1. =CELDA("filename")
  2. =1+HALLAR("]";<CellReferenceFor_1>)
  3. =3+HALLAR("'#$";<CellReferenceFor_1>)
  4. =ESERROR(<CellReferenceFor_2>;)
  5. =ESERROR(<CellReferenceFor_3>;)
  6. =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 planilha é tão fácil na planilha moderna (aviso, no EXCEL 2000, esta não existe): =HOJA(A1)

E outra coisa: por que as 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 duro, precisa lembrar de todos os nomes de função em idiomas multiplicados.

Internamente, eles são salvos com nomes específicos, por exemplo =SHEET(A1) , que é o mesmo que =HOJA(A1) é salvo como =_xlfn.SHEET(A1) ; por que não usar em todos os idiomas o último?.

Ou dito de outra forma: por que se eu colocar em inglês ele diz que não é nome de função inválido (se CALC / M $ EXCEL não está em inglês)?

Com as funções M $ ACCESS e SQL que não acontecem, na versão em espanhol eu posso digitá-las em espanhol ESNULO() e em inglês ISNULL() e é correto.

Se for muito complicado aceitar ambos; bem, então aceite apenas um, não localize para multiplicar os idoms!

Bem, 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) enquanto extrai o nome de =CELL("filename") . É tão estranho!

Novamente 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!

    
por 13.10.2016 / 13:42
-1

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:

=(SUBSTITUTE(MID((RIGHT(CELL("filename"),LEN(CELL("filename"))-MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"),ROW(1:255:255)))),SEARCH("\",CELL("filename"),ROW(1:255:255)))))),FIND("#$",(RIGHT(CELL("filename"),LEN(CELL("filename"))-MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"),ROW(1:255:255)))),SEARCH("\",CELL("filename"),ROW(1:255:255)))))))+2,20),1,1))

    
por 25.07.2012 / 18:03