Valore di riferimento in una cartella di lavoro di Excel chiusa utilizzando INDIRETTO?

Voglio fare riferimento a un valore di cella in un’altra cartella di lavoro chiusa con una formula (non VBA!). Il nome del foglio è memorizzato come variabile (nell’esempio seguente, C13 è “Foglio2”).

Se l’altro file è aperto, quindi i seguenti lavori:

=INDIRECT("[myExcelFile.xlsm]" & C13 & "!$A$1") 

Se il file è chiuso, la formula di cui sopra non funziona, in quanto non viene fornito alcun percorso assoluto. Ma l’ho fatto funzionare con il seguente (attenzione a “invece di”:

 ='C:\data\[myExcelFile.xlsm]Sheet2'!$A$1 

Ora voglio sostituire il “Foglio2” con hardcoded con un valore di riferimento dinamico, significa con C13 (come si vede nel primo snippet di codice).

Qualcuno conosce una soluzione senza usare VBA o altre librerie?

Non c’è definitivamente alcun modo per farlo con le formule standard. Tuttavia, un pazzo tipo di risposta può essere trovato qui . Evita ancora VBA e ti consentirà di ottenere risultati dinamici.

  1. Per prima cosa, crea la formula che genererà la tua formula, ma non aggiungere la = all’inizio!

  2. Supponiamo che tu abbia creato questa formula nella cella B2 di Sheet1 e desideri che la formula venga valutata nella colonna c .

  3. Ora vai alla scheda Formule e scegli “Definisci nome”. Dagli il nome myResult (o qualunque cosa tu scelga), e sotto Refers To, scrivi =evaluate(Sheet1!$B2) (nota $ )

  4. Infine, vai a C2 e scrivi =myResult . Trascina verso il basso e … voilà!

Controlla la funzione INDICE:

 =INDEX('C:\path\[file.xlsm]Sheet1'!A10:B20;1;1) 

= INDIRETTO ( ” ‘C: \ Data [ “& A8 e”] sheetname’! $ G9″)

dove A8 contiene myExcelFile.xlsm

e G9 contiene i dati preziosi della cartella di lavoro di origine.

Se si conosce il numero di fogli che si desidera fare riferimento, è ansible utilizzare la funzione in basso per trovare il nome. Di quanto tu possa usarlo nella funzione INDIRETTO.

 Public Function GETSHEETNAME(address As String, Optional SheetNumber As Integer = 1) As String Set WS = GetObject(address).Worksheets GETSHEETNAME = WS(SheetNumber).Name End Function 

Questa soluzione non richiede che la cartella di lavoro di riferimento sia aperta: Excel la aprirà da sola (ma sarà nascosta).

Anch’io stavo cercando la risposta alle celle di riferimento in una cartella di lavoro chiusa. Ecco il link alla soluzione (formula corretta) sotto. L’ho provato sul mio attuale progetto (facendo riferimento a una singola cella e una serie di celle) e funziona bene senza errori. Spero che ti aiuti.

https://www.extendoffice.com/documents/excel/4226-excel-reference-unopened-file.html

Nella formula, E:\Excel file\ è il percorso completo del file della cartella di lavoro non aperta, test.xlsx è il nome della cartella di lavoro, Sheet2 è il nome del foglio che contiene il valore della cella da cui occorre fare riferimento e A:A,2,1 significa che la cella A2 verrà referenziata nella cartella di lavoro chiusa. Puoi cambiarli in base alle tue esigenze.

Se si desidera selezionare manualmente un foglio di lavoro da utilizzare, utilizzare questa formula

=INDEX('E:\Excel file\[test.xlsx]sheetname'!A:A,2,1)

Dopo aver applicato questa formula, otterrai una finestra di dialogo Seleziona foglio, seleziona un foglio di lavoro e fai clic sul pulsante OK. Quindi il valore certo della cella di questo foglio di lavoro sarà referenziato immediatamente.

In Excel 2016, almeno, è ansible utilizzare INDIRETTO con un riferimento completo al percorso; l’intero riferimento (incluso il nome del foglio) deve essere racchiuso tra ' caratteri.

Quindi questo dovrebbe funzionare per voi:

 = INDIRECT("'C:\data\[myExcelFile.xlsm]" & C13 & "'!$A$1") 

Nota la chiusura ' nell’ultima stringa (es. '!$A$1 circondato da "" )

OK,

Ecco un metodo dinosauro per te su Office 2010.

Scrivi l’indirizzo completo che vuoi usando concatenare (il metodo “&” di combinare il testo).

Fallo per tutti gli indirizzi di cui hai bisogno. Dovrebbe assomigliare a:

= “=” & “‘\ INDIRIZZO COMPLETO DELLA RETE incluso [Nome foglio di calcolo]” & W3 & “‘! $ W4”

Il W3 è un riferimento dinamico al foglio che sto usando, il W4 è la cella che voglio ottenere dal foglio.

Una volta che hai questo, avvia una sessione di registrazione macro. Copia la cella e incollala in un’altra. L’ho incollato in una cella unita e mi ha dato il classico errore “Stessa dimensione”. Ma una cosa è stata incollare il testo risultante dal mio concatenato (incluso quello extra “=”).

Copia su tutti quelli per cui l’hai fatto. Quindi, vai in ogni cella incollata, seleziona il testo e premi Invio. Lo aggiorna a un riferimento diretto attivo.

Una volta che hai finito, metti il ​​cursore in un posto carino e ferma la macro. Assegnalo a un pulsante e hai finito.

È un po ‘un PITA per fare questo la prima volta, ma una volta che lo hai fatto, hai appena fatto il piolo quadrato in forma di quel foro rotondo daamned.