Risposte:
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)
Ecco una formula.
=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)
Prima salva il tuo file che inserisci questa formula ovunque
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
;
invece di ,
quando si separano gli elementi di una funzione
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):
=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>))
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!
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))