Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel a volte impazzisce

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

Re: Excel a volte impazzisce

Postdi Anthony47 » 20/05/18 22:42

Eh, difficile essere chiari quando si brancola nel buio...

Allora, il mio primo dubbio e' che, quando la macro termina rapidamente, possa non aver scritto tutte le formule, risparmiando cosi' un po' di tempo.
Per questo dico:
1) la tua macro scrive un tot di formule nel ciclo For y = xy To Rsdata / For I = 0 To NrTitoliTrading – 1 /Next I /Next y:
-se prima di avviare quel ciclo tutte le celle che saranno oggetto di inserimento di formule vengono cancellate allora, a conclusione della macro, avremo la certezza che tutte le formule sono state compilate (o l'evidenza che un tot non lo siano state).

2) inoltre vorrei essere certo che il ciclo di compilazione delle formule includa sempre anche la ricompilazione dei vari externalLinkXYZ.xml; per questo subito dopo aver cancellato le formule bisogna procedere con un salvataggio del Workbook

Quanto alle formule, vorrei capire meglio quale quantita' di celle e' coinvolta; ora io non ho la minima idea di cosa ci sia nelle variabili (ad esempio) UscitaNomeTitolo, NrDay, LagUscitaNomeTitolo quindi non posso farmi un'idea di quanto pesanti siano le formule e se i loro componenti puntano a externalLink diversi. Quindi mi interessa vedere alcune formule.
Ad esempio, nella tua Sub AggiornaTutto, nella seconda parte c'e' questo loop:

Codice: Seleziona tutto
'tiro fuori leva trade e risultati
For y = xy To Rsdata
    For I = 0 To NrTitoliTrading – 1
'
'altre istruzioni
'
        Cells(y, PcSez2Vba + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaNomeTitolo & ";NrDay+LagUscitaNomeTitolo-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)));"""")"
'
'altre istruzioni
'
        Cells(y, PcSez2Vba + NrTitoliTrading + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaCval & ";NrDay+LagUscitaCval-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
'
'altre istruzioni
'
        Cells(y, PcSez2Vba + NrTitoliTrading * 2 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
'
'Continua istruzioni
'

Allora metti uno Stop in questa posizione:
Codice: Seleziona tutto
Ricomincia2:
    Next I
If y = xy Then Stop        '<<< Stop alla fine del primo ciclo I; vedi testo
Next y

Avvia la macro e quando arriva allo Stop copia e pubblica almeno le prime 3 formule della prima colonna che questo ciclo ha inserito; se vuoi pubblicarne di piu' va benissimo purche' siano in sequenza (in modo da poterle confrontare che le istruzioni che le hanno generate). Aggiungo che potrebbe essere utile avere anche la vista di come cambia in orizzontale la prima formula.

Poi (dallo Stop) completa la macro con F5.

Potrebbe essere utile creare una configurazione ridotta di file (che faccia le stesse cose pero' su un numero ridotto di file o di titoli, in modo da poter esaurire dei cicli di test in 15 minuti invece che 2 ore.

Ti avevo anche suggerito di "misurare" i tempi di esecuzione delle varie fasi; limitandoci alla seconda fase delle modifiche fatte dal vba andrebbe modificato il ciclo come segue:
Codice: Seleziona tutto
'tiro fuori leva trade e risultati       'INIZIO MODIFICHE PER METRICA
Dim myTim As Single
Debug.Print ">>>>>>", "Y max = " & Rsdata, "I max = " & NrTitoliTrading
For y = xy To Rsdata
Debug.Print "Y = " & y
    For I = 0 To NrTitoliTrading - 1

        'acquisisco il nome del file
        If Cells(y, PcSez2Vba - NrTitoliTrading * 3 + I) = "" Then GoTo Saltacella2
        NomeFile = Cells(y, PcSez2Vba - NrTitoliTrading * 3 + I).Value
Debug.Print NomeFile            'NOME FILE, vedi Testo
   
        'formatto le celle e scrivo il nome del file tradato
        Cells(y, PcSez2Vba + I).Select
        Selection.NumberFormat = "#,##0"
        Cells(y, PcSez2Vba + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaNomeTitolo & ";NrDay+LagUscitaNomeTitolo-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
       
        'formatto le celle e scrivo il controvalore
        Cells(y, PcSez2Vba + NrTitoliTrading + I).Select
        Selection.NumberFormat = "#,##0"
        Cells(y, PcSez2Vba + NrTitoliTrading + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaCval & ";NrDay+LagUscitaCval-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
   
        'formatto le celle e scrivo la leva
        Cells(y, PcSez2Vba + NrTitoliTrading * 2 + I).Select
        Selection.NumberFormat = "0.00_ ;[Red]-0.00 "
        Cells(y, PcSez2Vba + NrTitoliTrading * 2 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
   
        'formatto le celle e scrivo il rendimento
        Cells(y, PcSez2Vba + NrTitoliTrading * 3 + I).Select
        Selection.NumberFormat = "0.00_ ;[Red]-0.00 "
        With Selection.Font
                .Color = -10477568
                .TintAndShade = 0
        End With
        Cells(y, PcSez2Vba + NrTitoliTrading * 3 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))*RC[-" & NrTitoliTrading * 4 & "]/(1/TitForTrading));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
   
        'formatto le celle e scrivo il rendimento con capitale levato
        Cells(y, PcSez2Vba + NrTitoliTrading * 4 + I).Select
        Selection.NumberFormat = "0.00_ ;[Red]-0.00 "
        With Selection.Font
                .Color = -10477568
                .TintAndShade = 0
        End With
        Cells(y, PcSez2Vba + NrTitoliTrading * 4 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRendLeva & ";NrDay+LagUscitaRendLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRendLeva & ";NrDay+LagUscitaRendLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))*RC[-" & NrTitoliTrading * 5 & "]/(1/TitForTrading));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
       
Ricomincia2:
    Next I
Debug.Print Format(Timer - myTim, "0.00"), I, y
If y = xy Then Stop        '<<< Stop alla fine del primo ciclo I; vedi testo
Next y   
Debug.Print "----": Debug.Print "----"
If y <= Rsdata And I <= NrTitoliTrading Then
Saltacella2:                     'FINE MODIFICHE PER METRICA

Spero non sia difficile identificare l'area in cui ho lavorato e che va sostituita col mio codice.

Il risultato e' che verra' scritto nella finestra Immediata del vba il tempo richiesto dall'inizio ad arrivare a quella fase: nel primo ciclo For I = 0 To NrTitoliTrading – 1 / Next I verra' scritto il tempo per ognuna delle N formule scritte (7 * N Colonne); nei cicli successivi si scrivera' solo il tempo complessivo.
Ho anche previsto di registrare il "NomeFile".

Purtroppo io QUESTO codice non sono in grado di testarlo, spero di non aver fatto cappellate...

Cosa si puo' ottenere dall'esame di questi tempi? Non lo so, ma spero che confrontando i tempi di una situazione "normale" con una "anomala" magari si possa accendere un lumicino...

Se decidi di inserire queste misurazioni allora raccogli un paio di situazioni normali e, quando succederera', raccogli la metrica della sessione; se pubblichi poi queste misurazioni vediamo insieme se salta fuori qualcosa.

Da parte mia una serie di simulazioni con link esterni, ripetuta per migliaia di volte, ha prodotto sempre gli stessi risultati, sia su XL2010 che XL2016

Per accedere alla "finestra Immediata" del vba, dal premi Contr-g
Una sessione di misura comincia con Debug.Print ">>>>>", "Y max = " etc etc e termina con due righe di "----"

Non perdere il messaggio di Zer0K (vedi sopra; certo che se avessimo visto le formule la domanda sarebbe stata inutile)

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

Sponsor
 

Re: Excel a volte impazzisce

Postdi ramset1978 » 20/05/18 22:54

Zer0Kelvin ha scritto:Ciao a tutti.
Solo una domanda: i files si trovano da elaborare si trovano fisicamente sul PC o sono in una rete?

I files sono sul pc.
ciao
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: Excel a volte impazzisce

Postdi ramset1978 » 20/05/18 23:19

Anthony47 ha scritto:Eh, difficile essere chiari quando si brancola nel buio...

Allora, il mio primo dubbio e' che, quando la macro termina rapidamente, possa non aver scritto tutte le formule, risparmiando cosi' un po' di tempo.
Per questo dico:
1) la tua macro scrive un tot di formule nel ciclo For y = xy To Rsdata / For I = 0 To NrTitoliTrading – 1 /Next I /Next y:
-se prima di avviare quel ciclo tutte le celle che saranno oggetto di inserimento di formule vengono cancellate allora, a conclusione della macro, avremo la certezza che tutte le formule sono state compilate (o l'evidenza che un tot non lo siano state).

2) inoltre vorrei essere certo che il ciclo di compilazione delle formule includa sempre anche la ricompilazione dei vari externalLinkXYZ.xml; per questo subito dopo aver cancellato le formule bisogna procedere con un salvataggio del Workbook

Quanto alle formule, vorrei capire meglio quale quantita' di celle e' coinvolta; ora io non ho la minima idea di cosa ci sia nelle variabili (ad esempio) UscitaNomeTitolo, NrDay, LagUscitaNomeTitolo quindi non posso farmi un'idea di quanto pesanti siano le formule e se i loro componenti puntano a externalLink diversi. Quindi mi interessa vedere alcune formule.
Ad esempio, nella tua Sub AggiornaTutto, nella seconda parte c'e' questo loop:

Codice: Seleziona tutto
'tiro fuori leva trade e risultati
For y = xy To Rsdata
    For I = 0 To NrTitoliTrading – 1
'
'altre istruzioni
'
        Cells(y, PcSez2Vba + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaNomeTitolo & ";NrDay+LagUscitaNomeTitolo-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)));"""")"
'
'altre istruzioni
'
        Cells(y, PcSez2Vba + NrTitoliTrading + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaCval & ";NrDay+LagUscitaCval-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
'
'altre istruzioni
'
        Cells(y, PcSez2Vba + NrTitoliTrading * 2 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
'
'Continua istruzioni
'

Allora metti uno Stop in questa posizione:
Codice: Seleziona tutto
Ricomincia2:
    Next I
If y = xy Then Stop        '<<< Stop alla fine del primo ciclo I; vedi testo
Next y

Avvia la macro e quando arriva allo Stop copia e pubblica almeno le prime 3 formule della prima colonna che questo ciclo ha inserito; se vuoi pubblicarne di piu' va benissimo purche' siano in sequenza (in modo da poterle confrontare che le istruzioni che le hanno generate). Aggiungo che potrebbe essere utile avere anche la vista di come cambia in orizzontale la prima formula.

Poi (dallo Stop) completa la macro con F5.

Potrebbe essere utile creare una configurazione ridotta di file (che faccia le stesse cose pero' su un numero ridotto di file o di titoli, in modo da poter esaurire dei cicli di test in 15 minuti invece che 2 ore.

Ti avevo anche suggerito di "misurare" i tempi di esecuzione delle varie fasi; limitandoci alla seconda fase delle modifiche fatte dal vba andrebbe modificato il ciclo come segue:
Codice: Seleziona tutto
'tiro fuori leva trade e risultati       'INIZIO MODIFICHE PER METRICA
Dim myTim As Single
Debug.Print ">>>>>>", "Y max = " & Rsdata, "I max = " & NrTitoliTrading
For y = xy To Rsdata
Debug.Print "Y = " & y
    For I = 0 To NrTitoliTrading - 1

        'acquisisco il nome del file
        If Cells(y, PcSez2Vba - NrTitoliTrading * 3 + I) = "" Then GoTo Saltacella2
        NomeFile = Cells(y, PcSez2Vba - NrTitoliTrading * 3 + I).Value
Debug.Print NomeFile            'NOME FILE, vedi Testo
   
        'formatto le celle e scrivo il nome del file tradato
        Cells(y, PcSez2Vba + I).Select
        Selection.NumberFormat = "#,##0"
        Cells(y, PcSez2Vba + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaNomeTitolo & ";NrDay+LagUscitaNomeTitolo-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
       
        'formatto le celle e scrivo il controvalore
        Cells(y, PcSez2Vba + NrTitoliTrading + I).Select
        Selection.NumberFormat = "#,##0"
        Cells(y, PcSez2Vba + NrTitoliTrading + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaCval & ";NrDay+LagUscitaCval-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
   
        'formatto le celle e scrivo la leva
        Cells(y, PcSez2Vba + NrTitoliTrading * 2 + I).Select
        Selection.NumberFormat = "0.00_ ;[Red]-0.00 "
        Cells(y, PcSez2Vba + NrTitoliTrading * 2 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaLeva & ";NrDay+LagUscitaLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0))));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
   
        'formatto le celle e scrivo il rendimento
        Cells(y, PcSez2Vba + NrTitoliTrading * 3 + I).Select
        Selection.NumberFormat = "0.00_ ;[Red]-0.00 "
        With Selection.Font
                .Color = -10477568
                .TintAndShade = 0
        End With
        Cells(y, PcSez2Vba + NrTitoliTrading * 3 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRend & ";NrDay+LagUscitaRend-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))*RC[-" & NrTitoliTrading * 4 & "]/(1/TitForTrading));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
   
        'formatto le celle e scrivo il rendimento con capitale levato
        Cells(y, PcSez2Vba + NrTitoliTrading * 4 + I).Select
        Selection.NumberFormat = "0.00_ ;[Red]-0.00 "
        With Selection.Font
                .Color = -10477568
                .TintAndShade = 0
        End With
        Cells(y, PcSez2Vba + NrTitoliTrading * 4 + I).FormulaLocal = "=SE(TitForTrading>=" & I + 1 & ";SE(INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRendLeva & ";NrDay+LagUscitaRendLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))="""";"""";INDICE('" & path2 & NomeFile & ".xlsm'! " & UscitaRendLeva & ";NrDay+LagUscitaRendLeva-INDICE(PrimaRiga;CONFRONTA(""" & NomeFile & """;TI;0)))*RC[-" & NrTitoliTrading * 5 & "]/(1/TitForTrading));"""")"
If y = xy Then Debug.Print Format(Timer - myTim, "0.00"), I
       
Ricomincia2:
    Next I
Debug.Print Format(Timer - myTim, "0.00"), I, y
If y = xy Then Stop        '<<< Stop alla fine del primo ciclo I; vedi testo
Next y   
Debug.Print "----": Debug.Print "----"
If y <= Rsdata And I <= NrTitoliTrading Then
Saltacella2:                     'FINE MODIFICHE PER METRICA

Spero non sia difficile identificare l'area in cui ho lavorato e che va sostituita col mio codice.

Il risultato e' che verra' scritto nella finestra Immediata del vba il tempo richiesto dall'inizio ad arrivare a quella fase: nel primo ciclo For I = 0 To NrTitoliTrading – 1 / Next I verra' scritto il tempo per ognuna delle N formule scritte (7 * N Colonne); nei cicli successivi si scrivera' solo il tempo complessivo.
Ho anche previsto di registrare il "NomeFile".

Purtroppo io QUESTO codice non sono in grado di testarlo, spero di non aver fatto cappellate...

Cosa si puo' ottenere dall'esame di questi tempi? Non lo so, ma spero che confrontando i tempi di una situazione "normale" con una "anomala" magari si possa accendere un lumicino...

Se decidi di inserire queste misurazioni allora raccogli un paio di situazioni normali e, quando succederera', raccogli la metrica della sessione; se pubblichi poi queste misurazioni vediamo insieme se salta fuori qualcosa.

Da parte mia una serie di simulazioni con link esterni, ripetuta per migliaia di volte, ha prodotto sempre gli stessi risultati, sia su XL2010 che XL2016

Per accedere alla "finestra Immediata" del vba, dal premi Contr-g
Una sessione di misura comincia con Debug.Print ">>>>>", "Y max = " etc etc e termina con due righe di "----"

Non perdere il messaggio di Zer0K (vedi sopra; certo che se avessimo visto le formule la domanda sarebbe stata inutile)

Ciao

Ciao Anthony, rispondo ai primi tuoi due punti....
1) le formule vengono certamente cancellate... la prima macro cancella interamente il file precedente, poi inserisce le nuove formule nel primo rigo delle celle facenti parti delle sezioni excel. (nessun dubbio che possano rimanere formule scritte). Inoltre i test non coinvolgono sempre lo stesso numero di titoli quindi tra un test e l'altro cambiano proprio colonna le formule da scrivere.
2) ribadito che le formule cambiano colonne, quando creo un nuovo test, dopo aver inserito la prima formula effettuo sempre un salvataggio per evitare ciò che tu supponi. Dulcis in fundo, io vedo il file completamente bianco prima di avviare la macro aggiornatutto.

Queste le prime 3 formule scritte della prima colonna interessata dal ciclo da te segnalato:

=SE(TitForTrading>=1;INDICE('D:\TRADING\BANCA DATI EXCEL\Sys\Intraday\Italia(5-05)\BIN(5-05).xlsm'!Titolo;NrDay+LagUscitaNomeTitolo-INDICE(PrimaRiga;CONFRONTA("BIN(5-05)";TI;0)));"")

=SE(TitForTrading>=1;INDICE('D:\TRADING\BANCA DATI EXCEL\Sys\Intraday\Italia(5-05)\UC(5-05).xlsm'!Titolo;NrDay+LagUscitaNomeTitolo-INDICE(PrimaRiga;CONFRONTA("UC(5-05)";TI;0)));"")

=SE(TitForTrading>=1;INDICE('D:\TRADING\BANCA DATI EXCEL\Sys\Intraday\Italia(5-05)\FCA(5-05).xlsm'!Titolo;NrDay+LagUscitaNomeTitolo-INDICE(PrimaRiga;CONFRONTA("FCA(5-05)";TI;0)));"")

Per quanto riguarda le misurazioni preferisco evitare per due ordini di motivi. Il primo è che non ho tempo per farlo considerato che sto poco bene, il secondo è che per quanto detto sopra e per il fatto che utilizzo questo test da almeno 5 anni, ti posso assicurare che il tempo giusto è 2 ore 2 ore e mezzo.... considera che i file da richiamare non pesano tutti allo stesso modo ed inoltre ogni giorno che passa si ha una riga in più per questo il tempo non è esattamente lo stesso. Se andassi ad effettuare una misurazione otterrei un tempo che varia quindi tra le 2 ore e le 2 ore e mezzo. Ed è il tempo corretto. Quelle due volte che è impazzito (per quanto riguarda la seconda parte di vba perchè per la prima succede spesso che impazzisce), ho fatto dei controlli a campione ed i richiami cosi come i risultati erano assolutamente corretti. Cosa possa succedere non lo so e non lo scopriremmo di certo misurando il tempo del test che sarebbe, ripeto ancora una volta, tra le 2 ore e le 2 ore e mezzo. Magari ci vorrebbero mesi prima che succeda di nuovo ed io non faccio certo test tutti i giorni, lo faccio ogni 6-12 mesi. Per quanto mi riguarda il dilemma non è risolvibile. Ciao
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Re: Excel a volte impazzisce

Postdi Anthony47 » 21/05/18 14:38

Per quanto mi riguarda il dilemma non è risolvibile
Risolto :D
(e riguardati)
Avatar utente
Anthony47
Moderatore
 
Post: 16572
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel a volte impazzisce

Postdi ramset1978 » 21/05/18 15:13

Anthony47 ha scritto:
Per quanto mi riguarda il dilemma non è risolvibile
Risolto :D
(e riguardati)

Grazie Anthony, rimani il più grande di tutti.
Ciao
Ramset1978
Win 7 + Office 2010 Ita
ramset1978
Utente Senior
 
Post: 223
Iscritto il: 25/03/12 16:04
Località: Avezzano

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Excel a volte impazzisce":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti