È possibile ottenere lo sheetname?


Risposte:


7

Microsoft spiega potrebbe essere necessario utilizzare una formula di matrice per ottenere il nome del foglio:

Per visualizzare il nome del foglio di lavoro corrente, digitare la seguente formula come formula di matrice

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

dove "nomefile" è letteralmente la parola "nomefile", tra virgolette.

NOTA: è necessario immettere questa formula come formula di matrice. Per inserire una formula come formula di matrice, premere CTRL + MAIUSC + INVIO.

Si noti inoltre che questo dipende molto dalla piattaforma. Su un Mac, ti servirà diverse formule , poiché utilizza separatori di percorso diversi. Inoltre, potrebbe funzionare diversamente in OpenOffice.org e altre alternative. E quando si utilizza su una cartella di lavoro non salvata, si potrebbe ottenere #VALUE! anziché.

Quando non si utilizza una formula di matrice, è possibile ottenere il nome della cartella di lavoro (l'ultima parte del nome del file), in questo modo:

Per restituire solo il nome della cartella di lavoro, come utilizzato nella seguente formula:

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

7

Ecco una formula.

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

( Link a maggiori informazioni )


Si noti che il riferimento a "A1" non è necessario. Inoltre, si noti che questo non è indipendente dalla piattaforma e che la formula potrebbe rimanere vuota fino a quando non si salva la cartella di lavoro. Guarda anche support.microsoft.com/kb/323225
Arjan

Se lo metto in due fogli di lavoro avrà lo stesso nome in entrambi. Non ottiene il foglio di lavoro corrente in cui si trova la cella. Ottiene il foglio di lavoro corrente che sto visualizzando e replicare il valore su tutti gli altri campi in tutti gli altri fogli di lavoro.
BrunoLM

2

Prima salva il tuo file che inserisci questa formula ovunque

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

+ Funziona ed è breve. Nota a margine: in tedesco Excel =RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
nixda

Nel mio caso dovevo usare ; invece di , quando si separano gli elementi di una funzione
WoJ

0

Testato e funziona su M $ EXCEL e LibreOffice CALC (la formula è in spagnolo):

=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: è una formula enorme per adattarsi all'interno di altre formule o utilizzare solo una cella.

Penso che in inglese: EXTRAEB sarebbe MIDB, CELDA sarebbe CELL, SI sarebbe IF, ESERROR sarebbe ISERROR, HALLAR sarebbe TROVARE e, LARGO sarebbe LUNGHEZZA.

È molto meglio se dividi una formula così grande in più celle (per evitare di chiamare più volte):

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

Perché diavolo il nome del foglio è così complicato, mentre ottenere la posizione del foglio sulla lista dei fogli è così facile sul foglio di calcolo moderno (attenzione, su EXCEL 2000 questo non esiste): =HOJA(A1)

E un'altra cosa: perché le funzioni sono chiamate diverse in ogni lingua, e se ho M $ EXCEL è spagnolo e CALC in inglese (per non dire russo, Chinesse, ecc.)? Che duro lavoro, bisogno di ricordare tutti i nomi di funzioni su molti idiomi.

Internamente vengono salvati con nomi specifici, ad esempio =SHEET(A1) è lo stesso di =HOJA(A1) è salvato come =_xlfn.SHEET(A1); perché non usare su tutti gli idiomi l'ultimo ?.

O detto in un'altra forma: perché se lo metto in inglese dice che non è il nome della funzione vaild (se CALC / M $ EXCEL non è in inglese)?

Con le funzioni M $ ACCESS e SQL che non si verificano, nella versione spagnola posso inserirle in spagnolo ESNULO() e in inglese ISNULL() e lo prende correttamente.

Se è troppo complicato accettarli entrambi; bene, quindi accetta solo uno, non localizzare per moltiplicare gli idoli!

Will, tornando alla domanda, il trucco che uso su quell'enorme formula è di testare se ] esiste (M $ EXCEL), altrimenti prova se esiste '#$ (LibreOffice CALC) durante l'estrazione del nome da =CELL("filename"). È così strano!

Di nuovo con domande sarcastiche: perché hanno aggiunto =SHEET(A1) e non =SHEETNAME(A1)? Rende a tutti noi lavori più difficili!


-1

Su LibreOffice, ho mescolato la tua formula nel seguente, e il numero 20 verso la fine sarà il limite dei caratteri che verranno visualizzati:

= (SOSTITUTO (MID ((DESTRA (CELLA ( "filename"), LEN (CELL ( "nomefile")) - MAX (IF (NOT (ISERR (SEARCH ( "\", CELLA ( "nomefile"), ROW (1 : 255: 255)))), SEARCH ( "\", CELLA ( "nomefile"), ROW (1: 255: 255)))))), TROVA ( "# $", (DESTRA (CELLA ( "filename "), LEN (CELL (" nomefile ")) - MAX (IF (NOT (ISERR (SEARCH (" \ "CELLA ( "nomefile"), ROW (1: 255: 255)))), SEARCH (" \ ", CELL ( "nome file"), ROW (1: 255: 255))))))) + 2,20), 1,1))


1
Questo è per MS Excel.
James Mertz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.