|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
15-10-2017, 21.16.07 | #16 |
Newbie
Registrato: 06-10-2017
Messaggi: 12
|
Rif: excel - funzione INDIRETTO
Sorry |
16-10-2017, 20.44.04 | #17 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: excel - funzione INDIRETTO
Ok. torno a dire che questo è un uso anomalo del processo, comunque .....
1) siamo in Ottobre e apri il file Ottobre.xls, a Novembre apri Novembre.xls etc... 2) Importi dal file settembre.xls i dati nelle celle A3,A4,A5 etc.. (nomi dipendenti e i valori dalle celle C3,C4,C5 etc.. è corretto questo? 3) Quanti dipendenti ci possono essere nella colonna A
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
16-10-2017, 21.42.59 | #18 |
Newbie
Registrato: 06-10-2017
Messaggi: 12
|
Rif: excel - funzione INDIRETTO
è esatto. 12 dipendenti
|
17-10-2017, 23.00.52 | #19 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: excel - funzione INDIRETTO
Prova questa macro con queste impostazioni
1) apri il file ottobre.xlsm 2) nel foglio 1 in A1 digita la data 01/10/2017 e applica la formattazione personalizzata "mmmm" 3) Ora in A1 ti compare il mese di ottobre per esteso. 4) In A2 inseirsci la formula =TESTO(A1-1;"mmmm") e ti compare il mese precedente (settembre) 5) entra nell'editor di VBA (Alt+F11) crea un modulo e inserisci questo codice Codice:
Sub prova1() cart = "C:\Users\User\Desktop\" ' nomeFgl = "Foglio1" 'foglio di origine da cui prelevare i dati nomeFl = ActiveSheet.Cells(2, 1) 'nome del file da aprire r = 3: c = 1 For t = 3 To 14 indi = Chr(64 + c) & r indi1 = Chr(64 + c + 2) & r perc = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi).Range("A1").Address(, , xlR1C1) perc1 = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi1).Range("A1").Address(, , xlR1C1) Sheets("Foglio1").Cells(t, 1) = ExecuteExcel4Macro(perc) Sheets("Foglio1").Cells(t, 3) = ExecuteExcel4Macro(perc1) r = r + 1 Next t End Sub 7) torna al foglio1 di Excel e puoi inserire una forma rettangolare a cui abbini la macro appena inserita. 8) clicca sul rettangolo e fai girare la macro. La macro importa i valori della colonna A (nomi dipendenti) e della colonna C (ore giacenza) per i 12 dipendenti.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
18-10-2017, 17.33.37 | #20 |
Newbie
Registrato: 06-10-2017
Messaggi: 12
|
Rif: excel - funzione INDIRETTO
beh che dire, funziona alla grande!
con qualche riga hai risolto un problema enorme (per me) adesso sto cercando di adattarla al mio foglio originale e ci sto studiando un po' sopra Ma vorrei delle dritte 1) come modifico le celle da importare? A me interessano le colonne N Q T W Z AD AN AP BE, sempre partendo dalla riga 3: adesso sono 13 dipendenti per ognuno di loro ho unito 3 celle: quindi tizio è A3, caio A6 ecc... 2) è possibile far partire la macro all'apertura del file (senza cliccare sul tasto della macro?) Grazie |
18-10-2017, 20.30.25 | #21 | |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: excel - funzione INDIRETTO
Quota:
per il resto cambia il codice con questo Codice:
Sub prova1() cart = "C:\Users\User\Desktop\" ' nomeFgl = "Foglio1" 'foglio di origine da cui prelevare i dati nomeFl = ActiveSheet.Cells(2, 1) 'nome del file da aprire r = 3: c = 1 For t = 3 To 15 indi = Chr(64 + c) & r indi1 = Chr(64 + c + 2) & r perc = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi).Range("A1").Address(, , xlR1C1) perc1 = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi1).Range("A1").Address(, , xlR1C1) Sheets("Foglio1").Cells(r, 1) = ExecuteExcel4Macro(perc) Sheets("Foglio1").Cells(r, 3) = ExecuteExcel4Macro(perc1) For x = 14 To 28 indi3 = Chr(64 + x) & r perc = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi3).Range("A1").Address(, , xlR1C1) Sheets("Foglio1").Cells(r, x) = ExecuteExcel4Macro(perc) x = x + 2 Next x = 30 indi4 = Cells(r, x).Address perc = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi4).Range("A1").Address(, , xlR1C1) Sheets("Foglio1").Cells(r, x) = ExecuteExcel4Macro(perc) For y = 40 To 42 Step 2 indi5 = Cells(r, y).Address perc = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi5).Range("A1").Address(, , xlR1C1) Sheets("Foglio1").Cells(r, y) = ExecuteExcel4Macro(perc) Next indi6 = Cells(r, 57).Address perc = "'" & cart & "[" & nomeFl & "]" & nomeFgl & "'!" & Range(indi6).Range("A1").Address(, , xlR1C1) Sheets("Foglio1").Cells(r, 57) = ExecuteExcel4Macro(perc) r = r + 3 Next t End Sub
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
|
19-10-2017, 16.48.19 | #22 | |
Newbie
Registrato: 06-10-2017
Messaggi: 12
|
Rif: excel - funzione INDIRETTO
tutto ok, il codice funziona benone. Però adesso che l'ho adattato al mio foglio, mi sono reso conto di quando mi dicevi "questo è un uso anomalo del processo".
Quota:
ho bisogno di una formula dinamica, cioè che cambia in base ad un paramentro (in A3) nel mio esempio mi sembrava di aver reso bene l'idea... A3=tizio con la formula in C3=("'Z:\2017\settembre.xlsx'!"&A3&"_rim") diventa ("'Z:\2017\settembre.xlsx'!"tizio_rim") prende il valore di A3 e aggiunge il suffisso_rim (poi ce ne sono altri tipo _LP, _RL ecc). se A3 cambia, ad esempio A3=caio la formula cambia in ("'Z:\2017\settembre.xlsx'!"caio_rim"), caio_LP, caio_RL ecc... Facendo il collegamento diretto non funziona, serve indiretto che però funziona solo sui file aperti; ecco la mia domanda: come ottenere quello che ho detto prima con un codice vba? Più di così non sono in grado di spiegarmi, sorry un grosso grazie |
|
19-10-2017, 20.13.27 | #23 | ||
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: excel - funzione INDIRETTO
Quota:
Ad ogni modo la macro fa esattamente quello che hai richiesto, anche se è sbagliato andare a cambiare il valore in A3 o A6 etc... sia che tu abbia una formula sia che usi una macro. Cambiare 1 solo valore implica che si deve cambiare lo steso valore anche nel file del mese precedente. Se nel file Ottobre, in A3 metti tizio, devi fare la stessa modifica anche nel file settembre. Se tu usi un intervallo denominato a cui assegni un nome (_rim, lp etc...) questo nome è sempre riferito ad una cella. In pratica tu puoi cambiare il nome di tizio con caio, ma sulla riga di caio verranno importati i dati di tizio. Quota:
oppure fondi tutto in un file unico e lavori con le formule.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
||
20-10-2017, 00.10.19 | #24 |
Newbie
Registrato: 06-10-2017
Messaggi: 12
|
Rif: excel - funzione INDIRETTO
proverò, intanto ti ringrazio moltissimo per la pazienza. Il codice mi sarà utile, ho cercato di capirci qualcosa, forse è la volta buona che mi metto a studiare un po' di vba ..
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
[excel] funzione indiretto per nome foglio | qsin | Office suite | 13 | 07-03-2017 18.56.36 |
Laboratorio di VBA: Programmi e file sorgenti | Alexsandra | Guide | 17 | 16-03-2016 20.33.27 |
Excel e Marketing - funzione range... | LucaSeil | Office suite | 8 | 21-12-2005 12.54.39 |
CREARE FUNZIONE IN EXCEL | simonpietro | Office suite | 3 | 25-07-2005 11.22.02 |
Formattare celle in Excel con una funzione? | exion | Software applicativo | 2 | 15-06-2004 10.10.36 |