¿Es posible obtener el nombre de hoja?

Respuestas:

7

Microsoft explica es posible que necesite utilizar una fórmula matricial para obtener el nombre de la hoja:

Para mostrar el nombre de la hoja de trabajo actual, escriba la siguiente fórmula como una fórmula matricial

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

donde "nombre de archivo" es literalmente la palabra "nombre de archivo", entre comillas.

NOTA: Debe ingresar esta fórmula como una fórmula matricial. Para ingresar una fórmula como una fórmula matricial, presione CTRL + MAYÚS + ENTRAR.

También tenga en cuenta que esto es muy dependiente de la plataforma. En una Mac, necesitarás diferentes fórmulas , ya que utiliza diferentes separadores de trayectoria. Además, podría funcionar de manera diferente en OpenOffice.org y otras alternativas. Y cuando se utiliza en un libro de trabajo no guardado, puede obtener #VALUE! en lugar.

Cuando no utilice una fórmula matricial, puede obtener el nombre del libro de trabajo (la última parte de su nombre de archivo), así:

Para devolver solo el nombre del libro de trabajo, como se usa en la siguiente fórmula:

=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1,
  SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
Arjan
fuente
7

Aquí hay una fórmula.

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

( Enlace a más información )

FlashDark
fuente
Tenga en cuenta que la referencia a "A1" no es necesaria. Además, tenga en cuenta que esto no es independiente de la plataforma y que la fórmula puede permanecer en blanco hasta que guarde el libro. Ver también support.microsoft.com/kb/323225
Arjan
Si pongo esto en dos hojas de trabajo tendrá el mismo nombre en ambas. No obtiene la hoja de trabajo actual en la que se encuentra la celda. Obtiene la hoja de trabajo actual que estoy viendo y reproduzco el valor en todos los demás campos de todas las demás hojas de cálculo.
BrunoLM
2

Primero guarde su archivo que ingrese esta fórmula en cualquier lugar

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
Ahtasham Khan
fuente
+ Esto funciona y es corto. En una nota al margen: en el uso de Excel alemán =RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
nixda
En mi caso necesitaba usar ; en lugar de , Al separar los elementos de una función.
WoJ
0

Probado y funciona en M $ EXCEL y LibreOffice CALC (la fórmula está en español):

=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: Es una fórmula enorme que cabe dentro de otras fórmulas o usa solo una celda.

Creo que en inglés: EXTRAEB sería MIDB, CELDA sería CELL, SI sería SI, ESERROR sería ISERROR, HALLAR sería ENCONTRADO y LARGO sería LONGITUD.

Es mucho mejor si divide una fórmula tan grande en varias celdas (para evitar llamar a la misma vez varias veces):

  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 qué demonios obtener el nombre de la hoja es tan complicado, mientras que obtener la posición de la hoja en la lista de hojas es tan fácil en la hoja de cálculo moderna (advertencia, en EXCEL 2000 este no existe): =HOJA(A1)

Y otra cosa: ¿por qué las funciones se llaman diferentes en cada idioma? ¿Qué sucede si tengo M $ EXCEL es español y CALC en inglés (por no decir ruso, chino, etc.)? lo que es un trabajo duro, es necesario recordar todos los nombres de funciones en múltiples idiomas.

Internamente se guardan con nombres específicos, por ejemplo. =SHEET(A1) eso es lo mismo que =HOJA(A1) se guarda como =_xlfn.SHEET(A1); ¿Por qué no usar en todos los idiomas el último?

O dicho de otra forma: ¿por qué si lo pongo en inglés dice que no es el nombre de la función (si CALC / M $ EXCEL no está en inglés)?

Con las funciones de M $ ACCESS y SQL que no ocurren, en la versión en español puedo escribirlas en español ESNULO() y en ingles ISNULL() y lo toma correctamente.

Si es demasiado complicado aceptar ambos; Bueno, entonces acepta solo uno, ¡no localices para multiplicar ídolos!

Will, volviendo a la pregunta, el truco que uso en esa enorme fórmula es probar si ] existe (M $ EXCEL), de lo contrario prueba si existe '#$ (LibreOffice CALC) mientras extrae el nombre de =CELL("filename"). ¡Es tan raro!

Nuevamente con preguntas sarcásticas: ¿Por qué agregaron? =SHEET(A1) y no =SHEETNAME(A1)? ¡Nos hace a todos un trabajo más duro!

claudio
fuente
-1

En LibreOffice, he mezclado tu fórmula con la siguiente, y el número 20 hacia el final será el límite de los caracteres que se mostrarán:

= (SUSTITUYE (MID ((DERECHA (CELL ("nombre de archivo"), LEN (CELL ("nombre de archivo")) - MAX (IF (NO (ISERR (BÚSQUEDA ("\", CELLA ("nombre de archivo"), ROW (1 : 255: 255)))), BÚSQUEDA ("\", CELDA ("nombre de archivo"), FILA (1: 255: 255)))))), ENCONTRAR ("# $", (DERECHA (CELDA ("nombre de archivo "), LEN (CELL (" filename ")) - MAX (IF (NOT (ISERR (SEARCH (" \ ", CELL (" filename "), ROW (1: 255: 255)))), SEARCH (" \ ", CELL (" nombre de archivo "), ROW (1: 255: 255))))))) + 2,20), 1,1))

Carlos
fuente
1
Esto es para MS Excel.
James Mertz