Condividi:        

Modifica riferimenti cella dopo importazione

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Modifica riferimenti cella dopo importazione

Postdi BG66 » 03/05/19 11:46

Mentre scrivevo, ripensavo a quanto scritto da Anthony..qualche thread fà:
Eh he... Gene e' l'utente perfetto per un forum: preparato abbastanza per mettersi in situazioni complesse, ma non abbastanza per uscirne sempre con le sue gambe :D :D


E per mantenere fede a quanto sopra, ecco la richiesta....

Con i precedenti thread ho creato le condizioni per creare un DB del personale da usare come sorgente per altri files collegati. E tutto funziona tranne per un file dove i dati mi servono per interagire con altre informazioni.
Nello specifico la cella I9 del foglio di lavoro "Attestato (new)" del file "1_Formazione VForum" contiene dei riferimenti:
Codice: Seleziona tutto
=SE.ERRORE(INDICE(AnagraficaFull!$A$3:$J$70;CONFRONTA(Legenda!$B$16;AnagraficaFull!$J$3:$J$70;0);4);"---------------------------------------")

che quando lancio la nuova importazione dati dal foglio "AnagraficaFull" si modificano e nè bloccano il risultato:
Codice: Seleziona tutto
=SE.ERRORE(INDICE(AnagraficaFull!$A$3:$J$8;CONFRONTA(Legenda!$B$16;AnagraficaFull!$J$3:$J$8;0);4);"---------------------------------------")


Quale può essere la soluzione tecnica?

Grazie in anticipo.
Gene

PS nel file ho lasciato anche il vecchio foglio di lavoro"Attestato" che vorrei sostuituire perchè lavora su dati statici da aggiornare manualmente.

File destinazione: https://www.dropbox.com/s/63lupdzxfhs5er3/1_Formazione%20VForum.xlsm?dl=0
File sorgente: https://www.dropbox.com/s/tfxgl9pqwx5qax1/DB_ELEDIP_Forum.xlsm?dl=0
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Modifica riferimenti cella dopo importazione

Postdi Anthony47 » 03/05/19 13:48

Il problema nasce nel ciclo
Codice: Seleziona tutto
Cells(i, 1).Select
If Selection.Value <> "" Then Selection.EntireRow.Delete
Next i

Poiche' elimini righe all'interno dell'intervallo interessato dalla formula, l'intervallo nella formula si riduce progressivamente.

Io non so perche' elimini fisicamente le righe, operazione tra l'altro abbastanza lenta (non puo' bastare un "ClearContents" dell'area prima di procedere con la nuova importazione?), ma se e' necessario allora potresti modificare la formula in modo da includere un numero fisso e immodificabile di righe usando Indiretto; tipo (in I9):
Codice: Seleziona tutto
=SE.ERRORE(INDICE(INDIRETTO("AnagraficaFull!$A$3:$J$100");CONFRONTA(Legenda!$B$16;INDIRETTO("AnagraficaFull!$J$3:$J$100");0);4);"---------------------------------------")


Non mi pare che il foglio sia zeppo di formule, puoi benissimo allungare l'area fino a 1000 e non avrai problemi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Modifica riferimenti cella dopo importazione

Postdi BG66 » 03/05/19 17:34

Ciao Anthony
Anthony47 ha scritto: (non puo' bastare un "ClearContents" dell'area prima di procedere con la nuova importazione?),

Confermo che mi basterebbe cancellare il solo contenuto del range.

Domani faccio prove, la sintassi consigliata è
Codice: Seleziona tutto
Worksheets("Sheet1").Range("A1:G37").ClearContents


proverò a fare di meglio per sbloccarmi dalla definitione rigida del range.

A presto e grazie
Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Modifica riferimenti cella dopo importazione

Postdi BG66 » 03/05/19 18:56

Ciao,
sembra che tutto funzioni con solamente questa modifica:
Codice: Seleziona tutto
If Selection.Value <> "" Then Selection.EntireRow.ClearContents


Grazie ancora.
Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 320
Iscritto il: 20/08/16 07:44

Re: Modifica riferimenti cella dopo importazione

Postdi Anthony47 » 03/05/19 23:47

Confermo che mi basterebbe cancellare il solo contenuto del range.

Allora dovrebbe bastare fare il clearcontents dell'intera area senza scorrere (e selezionare!) ogni riga; tipo:
Codice: Seleziona tutto
righe = Cells(Rows.Count, 1).End(xlUp).Row              'Esistente
'Esistenti ma da CANCELLARE:
'For i = righe To 3 Step -1 'ex 1
'Cells(i, 1).Select
'If Selection.Value <> "" Then Selection.EntireRow.Delete
'Next i
Cells(3, 1).Resize(righe, 20).ClearContents             '++++AGGIUNTA
    StatoDiSicurezza = Application.AutomationSecurity   'Esistente
'etc etc


Accertati che la formula sul foglio Attestato (new) copra un numero di righe sufficienti per ogni situazione; insomma "allunga" quei "$70", valori fino a 1000 e anche oltre non creeranno nessun problema di velocita' di calcolo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Modifica riferimenti cella dopo importazione":


Chi c’è in linea

Visitano il forum: systemcrack e 37 ospiti