É 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)

BrunoLM
fonte

Respostas:

7

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)
Arjan
fonte
7

Aqui está uma fórmula.

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

( Link para mais informações )

FlashDark
fonte
Observe que a referência a "A1" não é necessária. Além disso, observe que isso não é independente de plataforma e que a fórmula pode permanecer em branco até que você salve a pasta de trabalho. Veja também support.microsoft.com/kb/323225
Arjan
Se eu colocar isso em duas planilhas, ele terá o mesmo nome em ambos. Ele não obtém a planilha atual onde a célula está. Ela obtém a planilha atual que estou visualizando e replica o valor em todos os outros campos em todas as outras planilhas.
BrunoLM
2

Primeiro salve seu arquivo do que digite esta fórmula em qualquer lugar

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
Ahtasham Khan
fonte
+ Isso funciona e é curto. Em uma nota lateral: Em alemão Excel use =RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
nixda
No meu caso eu precisava usar ; ao invés de , ao separar os elementos de uma função
WoJ
0

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):

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

claudio
fonte
-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:

= (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))

Carlos
fonte
1
Isso é para o MS Excel.
James Mertz