Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
grazie andrea,
ho letto quel topic, ma non riesco a far funzionare quelle formule con SOMMA(SE.....). e neanche quella matriciale.
Ho caricato nuovamente i 4 files su skydrive perché mi sono accorto che il file TUTI DATI era sbagliato.
Potresti scrivermi tu la formula funzionante sul file TUTTI DATI, in modo da capire come funziona?
Per quanto riguarda la produzione di una macro, non so assolutamente come fare.
Anche in questo caso potresti farmi un rapido esempio sui files che ho caricato?
Paolo
Ciao Paolo,
la formula da utilizzare per recuperare il valore di 1 o più celle da un file chiuso, non è particolarmente difficile, devi solamente rispettare alcune regole sintattiche:
- cartella dove si trova il file (con barra finale) C:\CartellaFileChiuso\
- nome del file (tra parentesi quadre) [55.xlsx]
- nome del foglio Foglio1
- nome del range $B$3:$B$6
ora non rimane che unire il tutto con l'avvertenza di racchiudere i primi 3 tra apice singolo ' ed inserire un ! prima del range, il risultato è questo:
='C:\CartellaFileChiuso[55.xlsx]Foglio1'!$B3:$B6
naturalmente nulla vieta di 'dare in pasto' l'intervallo così definito ad una funzione. Ad esempio:
nel foglio SOGGETTI del file TUTTI DATI seleziona le celle I2:N2 e digita la seguente formula, modificandola con i tuoi riferimenti e confermando con Ctrl+Shift+Enter:
=MATR.TRASPOSTA('C:\CartellaFileChiuso[2.xlsx]Foglio1'!$B$3:$B$8)
in un'unica operazione avrai riportato tutti i dati che ti servono e anche di più.
Continuando sulla stessa strada - ma non è detto che sia la migliore - se la procedura di cui sopra può risultare un po' lunga e noiosa, possiamo automatizzarla con una macro. Modifica la riga evidenziata nel codice che segue e se non hai mai utilizzato le macro ti invito a leggere Dove e come inserire il codice vba.
Buon lavoro,
Andrea.
Sub riportaCelleDaFoglio1()
Dim rSource As Range, cel As Range
Dim sPathName As tring
Dim lLastRow As Long
'---------- modifica qui il path
sPathName = "C:\CartellaFileChiuso"
With Worksheets("SOGGETTI")
lLastRow = .Range("C" & Rows.Count).End(xlUp).Row
Set rSource = Range("C2:C" & lLastRow)
For Each cel In rSource
With .Range("I" & cel.Value).Resize(, 6)
.FormulaArray = "=transpose('" & sPathName & "[" & cel.Value & ".xlsx]Foglio1'!B3:B8)"
.Value = .Value
End With
Next
End With
End Sub