Condividi:        

Excel 2013 trova e sostituisci LENTO

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

Excel 2013 trova e sostituisci LENTO

Postdi anonimo13 » 12/07/14 12:14

Sto lavorando su dei file excel pesanti, di circa 10 mb e mi trovo molto spesso a dover eseguire il comando trova e sostituisci. I fogli di lavoro sono molto grandi (300k righe) e il trova e sostituisci lo effettuo su 4 colonne.

Il problema è che il processo richiede molto tempo, è lentissimo. Su un pc con Windows 8.1, Office 2013, processore i7 4700mq e 12 GB ram impiega circa 5 minuti e il task manager di windows indica che il pc utilizza soltanto il 20% della potenza della cpu. Ho provato anche ad impostare priorità alta sul processo excel.exe ma non vedo miglioramenti. Perchè non usa tutta la potenza?

Ho provato anche ad eseguire lo stesso processo sullo stesso file ma su un pc differente con Windows 7, Office 2013, processore i5 2300 e 8 GB ram. Su questo pc impiega 3 minuti e 50. Anche su questo pc il task manager indica che viene utilizzata soltanto il 25% della potenza cpu.

Perchè impiegano così tanto tempo e perchè il secondo pc è più veloce? Ha un i5 e tre anni di vita, quello con l'i7 4700mq è stato appena acquistato ed ha anche più ram.
anonimo13
Utente Junior
 
Post: 30
Iscritto il: 24/02/12 23:41

Sponsor
 

Re: Excel 2013 trova e sostituisci LENTO

Postdi Anthony47 » 16/07/14 00:33

In prima battuta mi vien da dire che Win8 sembra essere piu' lento di Win7; in seconda battuta, controlla in Opzioni /Impostazioni avanzate, voce Formule, che sia spuntata la casella "Consenti calcolo multithread", e che il numero di processori sia coerente con la dotazione del tuo Pc.
Comunque 4-5 minuti mi sembrano esagerati: un test fatto su 340mila righe * 4 colonne, con un totale di circa 450mila sostituzioni, ha richiesto circa 50 secondi dal via al messaggio di completamento sostituzioni, piu' un altro minuto fino alla reale disponibilita' del foglio. Testato su XL2010 32 bit, su Win7 a 64 bit, cpu i7-2630QM CPU @ 2.00GHz, 6 GB di ram.

Comunqe una macro come questa potrebbe risolvere lo stesso problema, sullo stesso file di prova, in circa 15 secondi, PURCHE' le celle contengano VALORI e NON FORMULE (se contengono formule allora non usarla):
Codice: Seleziona tutto
Sub FindRep()
Dim myVArr, LastR As Long, LFor, myRep, I As Long, J As Long, myTim As Single, myOcc As Long
'
LastR = Cells(Rows.Count, 1).End(xlUp).Row
'LastR = 10000
'
LFor = Application.InputBox("Valore da CERCARE?")
myRep = Application.InputBox("Valore da sostituire a """ & LFor & """?" & _
    vbCrLf & "(premere ANNULLA per abortire il processo")
If myRep = False Then
    MsgBox ("Processo Trova e Sostituisci e' stato abortito")
    Exit Sub
Else
myTim = Timer
myVArr = Range("A1").Resize(LastR, 4).Value        '4=4 colonne
    For I = LBound(myVArr, 1) To UBound(myVArr, 1)
        For J = LBound(myVArr, 2) To UBound(myVArr, 2)
            If Not IsError(myVArr(I, J)) Then
                If Len(myVArr(I, J)) > 0 Then
                    If InStr(1, myVArr(I, J), LFor, vbTextCompare) > 0 Then
                        myOcc = myOcc + 1
                        myVArr(I, J) = Replace(myVArr(I, J), LFor, myRep, , , vbTextCompare)
                    End If
                End If
            End If
        Next J
    Next I
End If
'Scrive risultati:
Range("A1").Resize(LastR, 4).Value = myVArr
MsgBox ("Completato in " & Format(Timer - myTim, "0.00") & " Secs" & vbCrLf & _
    "(" & myOcc & " sostituzioni)")
End Sub
La macro chiede con due InputBox consecutivi quali valori cercare e quale valore usare in sostituzione, poi lavora con una struttura dati replicata in memoria.
Non so se potrai adattarla alle tue necessita'.

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


Torna a Applicazioni Office Windows


Topic correlati a "Excel 2013 trova e sostituisci LENTO":


Chi c’è in linea

Visitano il forum: Nessuno e 64 ospiti