Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Office suite

Notices

Rispondi
 
Strumenti discussione
Vecchio 06-11-2017, 19.24.22   #1
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
OverFlow, perchè ?

Ciao, giusto per non farmi mancare nulla, mi sono imbattuto in un nuovo problema , ovvero sto tentando di applicare una macro , perfettamente funzionante nel file originale (Yahoo stock etc) ma nel mio tentativo di applicazione mi dà un errore 6 di Overflow.
Ho provato a passare un malware, ho verificato il PC con Memory test , ma l 'errore resta e non so più che fare. Chiedo quindi il vs aiuto. Allego entrambi i file .

I file sono caricati i due formati diversi, zip e rar, per problemi di "ingombro".

le formule che mi interessano possono essere calcolate anche per via normale , con Excel, ma in questo caso mi sorgerebbe un altro problema ovvero definire un intervallo dinamico per il calcolo della deviazione standard e/o della varianza , ovvero con numerosità del campione soggetto a variazioni .

ps Ho provato anche a modificare alcune dim da Double a Long, pensando a un qualche vincolo che ne impediva il funzionamento, ma nulla da fare.
Files allegati
Tipo file: zip YahooStockQuotes.zip (96,7 Kb, 0 visite)
Tipo file: rar Test DevSTD.rar (219,0 Kb, 0 visite)
Gianca53 non è collegato   Rispondi citando
Vecchio 06-11-2017, 20.54.53   #2
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.208
Alexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raro
Rif: OverFlow, perchè ?

Io ho aperto il file "yaho ......"
sono andata nel foglio "Data" e ho cancellato tutto.
dal foglio "parameters" ho lanciato la macro tramite il pulsante "Get data fron Yahoo" e mi ha riempito le celle del foglio "data"

poi ho cliccato sul pulsante "analyze data" e mi ha riempito la colonna J e le prime 2 celle della colonna L senza darmi nessun errore.

Noto però che hai delle chiamate SET, questo comando alloca una porzione di memoria per la variabile che segue la parola chiave SET e non la distruggi a fine routine.
ti consiglio di inserire prima della chiamata End Sub la dicitura per eliminare l'allocazione di memoria. Per esempio, hai una chiamata

Set dataSheet = Sheets("Data")

prima di uscire dalla routine distruggi tutto con

Set dataSheet = Nothing

ripeti questo comando per tutte le chiamate SET che hai nelle routine, poi riprova. L'overflow causato è di sicuro dovuto a un uso ripetuto della routine senza eliminare dalla memoria i dati.

forse.
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 06-11-2017, 22.43.07   #3
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
Rif: OverFlow, perchè ?

Adesso provo a modificare il mio file "TestDevSTD", che è quello che mi dà problemi. Sorry se sono stato poco chiaro nella richiesta.
In quel file troverai un elenco dati statico, che non si aggiorna perchè non ho riportato la macro di "carico", comunque su questo elenco vorrei applicare la macro Analyzedata.
Gianca53 non è collegato   Rispondi citando
Vecchio 06-11-2017, 23.00.41   #4
ZeroKelvin
Newbie
 
Registrato: 12-05-2011
Messaggi: 3
ZeroKelvin promette bene
Rif: OverFlow, perchè ?

Ciao.
Forse la soluzione è molto più banale
Codice:
Sub AnalyzeData()
    Dim i As Integer
    Dim LastRow As Integer
    Dim avReturn As Double
    Dim stDev As Double
    Dim vrnc As Double

    LastRow = Sheets("Data").UsedRange.Row - 2 + Sheets("Data").UsedRange.Rows.Count
Sia i che LastRow sono dichiarate Integer ( valore compreso fra -32.768 e 32.767) ma, dal momento che sono destinate a contenere un valore di riga (le righe in un foglio sono 1048576) è molto probabile che siano queste variabili a provocare l'overflow.
Prova a dichiararle come Long.
ZeroKelvin non è collegato   Rispondi citando
Vecchio 07-11-2017, 08.20.03   #5
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
Rif: OverFlow, perchè ?

Provato, nulla da fare si impianta qui :
Quota:
Sheets("Data").Range("J" & i) = (Sheets("Data").Range("E" & i - 1) - Sheets("Data").Range("E" & i)) / Sheets("Data").Range("E" & i - 1)
con il solito messaggio di overflow
Gianca53 non è collegato   Rispondi citando
Vecchio 07-11-2017, 08.28.16   #6
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.400
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
Rif: OverFlow, perchè ?

Se dividi per 0, l'overflow è diretta conseguenza.
___________________________________

Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice
LoryOne non è collegato   Rispondi citando
Vecchio 07-11-2017, 11.21.23   #7
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.400
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
Rif: OverFlow, perchè ?

Concentriamoci su LastRow del file YahooStockQuotes...
Hai scritto:
Codice:
LastRow = Sheets("Data").UsedRange.Row - 2 + Sheets("Data").UsedRange.Rows.Count
In realtà, l'ultima riga non può che essere l'insieme di righe in uso, ossia:
Codice:
LastRow = Sheets("Data").UsedRange.Rows.Count
Le righe in uso sono giustamente 1008, non 1007

A questo punto, prova a cancellare l'ultima riga selezionandola interamente e poi premendo cancella.
Rieseguendo il codice, il valore sarà sempre 1008.
Com'è possibile, visto che alla riga 1008 non c'è nulla ? Addirittura il valore della J1008 pari ad 1 !?!
Riseleziona la riga 1008 e questa volta eliminala.
Riesegui ed il valore di LastRow sarà effettivamente 1007
___________________________________

Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice
LoryOne non è collegato   Rispondi citando
Vecchio 07-11-2017, 15.54.27   #8
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
Rif: OverFlow, perchè ?

Ma a te funziona, senza piu errore di overflow ? Io =impedito ma testardo, non ci sono mica riuscito .
Gianca53 non è collegato   Rispondi citando
Vecchio 07-11-2017, 17.59.45   #9
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.208
Alexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raro
Rif: OverFlow, perchè ?

Quota:
Inviato da Gianca53 Visualizza messaggio
Adesso provo a modificare il mio file "TestDevSTD", che è quello che mi dà problemi..


Il problema dell'overflow è il calcolo della riga, in quel file l'ultima riga scritta è la 1284 se continui con il codice e trovi delle righe vuote ti rimanda errore perchè vuoi che faccia dei calcoli su valori vuoti.
Modifica la riga di codice
LastRow = Sheets("Storico_CSV").UsedRange.Row - 1 + Sheets("Storico_CSV").Range("U2")

con
LastRow = Sheets("Storico_CSV").Cells(Rows.Count, 11).End(xlUp).Row
(colonna K) e non ti darà più errore.

Te ne riporterà un'altro alle righe

Sheets("Storico_CSV").Range("avReturn") = avReturn
Sheets("Storico_CSV").Range("stDev") = stDev
Sheets("Storico_CSV").Range("vrnc") = vrnc

con range devi inserire un riferimento di cella e non una variabile.

che cosa sono per te avreturn etc....
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 07-11-2017, 18.52.31   #10
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.400
LoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolareLoryOne ha un'aura spettacolare
Rif: OverFlow, perchè ?

Quota:
Inviato da Gianca53 Visualizza messaggio
Ma a te funziona, senza piu errore di overflow ? Io =impedito ma testardo, non ci sono mica riuscito .
Aggiungi un debug.print nel ciclo for...next.
Controlla il valore della variabile i e delle celle fino a quando ti va in overflow: L'overflow è quasi certamente dovuto all'operazione algebrica su quei valori, ma tu effettua un debug.print prima del calcolo, così da poter verificare i valori di tutte le variabili prima che si possano eseguire calcoli su di esse.
La finesta di debug si visualizza con Ctrl+G nell'editor VBA.
___________________________________

Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice
LoryOne non è collegato   Rispondi citando
Vecchio 07-11-2017, 19.06.22   #11
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
Rif: OverFlow, perchè ?

Ciao, risolto, finalmente ! Funziona tutto e non fa piu scherzi con l'overflow, complimenti per la tua "mossa" di cambiare la colonna di riferimento, è stata la pensata risolutiva.

Quota:
Option Explicit
Sub AnalyzeData()
Dim i As Integer
Dim LastRow As Integer
Dim avReturn As Double
Dim stDev As Double
Dim vrnc As Double

'LastRow = Sheets("Storico_CSV").UsedRange.Row - 1 + Sheets("Storico_CSV").Range("U2")
LastRow = Sheets("Storico_CSV").Cells(Rows.Count, 11).End(xlUp).Row
Sheets("Storico_CSV").Range("S1") = "Daily Returns" 'ex J1
Sheets("Storico_CSV").Range("U1") = "# Data" 'ex L1

Sheets("Storico_CSV").Range("U2") = LastRow 'ex L2
For i = 3 To LastRow

'Sheets("Data").Range("J" & i) = (Sheets("Data").Range("E" & i - 1) - Sheets("Data").Range("E" & i)) / Sheets("Data").Range("E" & i - 1)
Sheets("Storico_CSV").Range("S" & i) = (Sheets("Storico_CSV").Range("O" & i - 1) - Sheets("Storico_CSV").Range("O" & i)) / Sheets("Storico_CSV").Range("O" & i - 1)
Next i

avReturn = Application.WorksheetFunction.Average(Sheets("Stor ico_CSV").Range("S2" & LastRow))
stDev = Application.WorksheetFunction.StDev_P(Sheets("Stor ico_CSV").Range("S2" & LastRow))
vrnc = Application.WorksheetFunction.Var_P(Sheets("Storic o_CSV").Range("S2" & LastRow))

Sheets("Storico_CSV").Range("H2") = avReturn
Sheets("Storico_CSV").Range("H3") = stDev
Sheets("Storico_CSV").Range("H4") = vrnc

End Sub
allego anche il file , se qualcuna si interessa di titoli azionari puo essere utile assieme ai file del mio 3d precedente
Files allegati
Tipo file: rar 0_Test DevSTD.rar (141,7 Kb, 0 visite)
Gianca53 non è collegato   Rispondi citando
Vecchio 07-11-2017, 20.13.03   #12
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
Rif: OverFlow, perchè ?

Grazie a tutti per l'aiuto. Alla prossima
Gianca53 non è collegato   Rispondi citando
Vecchio 08-11-2017, 16.34.36   #13
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
Rif: OverFlow, perchè ?

Aggiornamento.
Capita che i dati scaricati abbiano qualche "buco" quindi la macro si impiantava per errore 13 , ho perciò inserito un controllo errore .
Quota:
Option Explicit
Sub AnalyzeData()
Dim i As Integer
Dim LastRow As Integer
Dim avReturn As Double
Dim stDev As Double
Dim vrnc As Double

Sheets("Storico_CSV").Unprotect
On Error Resume Next
Range("H2,H3,H4").Clear.txt

'LastRow = Sheets("Storico_CSV").UsedRange.Row - 1 + Sheets("Storico_CSV").Range("U2")
LastRow = Sheets("Storico_CSV").Cells(Rows.Count, 11).End(xlUp).Row
Sheets("Storico_CSV").Range("S1") = "Daily Returns" 'ex J1
Sheets("Storico_CSV").Range("U1") = "# Data" 'ex L1

Sheets("Storico_CSV").Range("U2") = LastRow 'ex L2
For i = 3 To LastRow

'Sheets("Data").Range("J" & i) = (Sheets("Data").Range("E" & i - 1) - Sheets("Data").Range("E" & i)) / Sheets("Data").Range("E" & i - 1)
Sheets("Storico_CSV").Range("S" & i) = (Sheets("Storico_CSV").Range("O" & i - 1) - Sheets("Storico_CSV").Range("O" & i)) / Sheets("Storico_CSV").Range("O" & i - 1)
Next i
If Err.Number = 13 Then ' inserire apici x messaggio non visibile
MsgBox "Valore errato o nullo"
End If

avReturn = Application.WorksheetFunction.Average(Sheets("Stor ico_CSV").Range("S2" & LastRow))
stDev = Application.WorksheetFunction.StDev_P(Sheets("Stor ico_CSV").Range("S2" & LastRow))
vrnc = Application.WorksheetFunction.Var_P(Sheets("Storic o_CSV").Range("S2" & LastRow))

Sheets("Storico_CSV").Range("H2") = avReturn
Sheets("Storico_CSV").Range("H3") = stDev
Sheets("Storico_CSV").Range("H4") = vrnc
Resume
Sheets("Storico_CSV").Protect
End Sub
Ps . Ho tentato di aggiungere il file ma per problemi di ingombro il sistema lo ha rifiutato > 135 kb. Cosa fare in questi casi ? giusto per mia info. grazie
Gianca53 non è collegato   Rispondi citando
Vecchio 08-11-2017, 20.42.47   #14
Alexsandra
Senior Member
WT Expert
 
L'avatar di Alexsandra
 
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.208
Alexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raroAlexsandra è un gioiello raro
Rif: OverFlow, perchè ?

Io ho provato varie volte e non mi rimanda nessun errore.
Per "Buco" nei dati intendi forse che ci sia qualche riga vuota??
se è così meglio gestire il ciclo IF con una condizione diversa tipo

SE "ciccio" = empty Then
salta una riga (i = i+1)
end if

Ho usato questo codice
Codice:
Option Explicit
Sub AnalyzeData()
    Dim i, LastRow As Integer
    Dim avReturn, stDev, vrnc As Double

LastRow = Sheets("Storico_CSV").Cells(Rows.Count, 11).End(xlUp).Row

    Sheets("Storico_CSV").Range("S1") = "Daily Returns"   'ex J1
    Sheets("Storico_CSV").Range("U1") = "# Data"  'ex L1

    Sheets("Storico_CSV").Range("U2") = LastRow   'ex L2
For i = 3 To LastRow
  Sheets("Storico_CSV").Range("S" & i) = Sheets("Storico_CSV").Range("O" & i - 1) - (Sheets("Storico_CSV").Range("O" & i) / Sheets("Storico_CSV").Range("O" & i - 1))
Next i

  avReturn = Application.WorksheetFunction.Average(Sheets("Storico_CSV").Range("S2:S" & LastRow))
  stDev = Application.WorksheetFunction.StDev_P(Sheets("Storico_CSV").Range("S2:S" & LastRow))
  vrnc = Application.WorksheetFunction.Var_P(Sheets("Storico_CSV").Range("S2:S" & LastRow))

Sheets("Storico_CSV").Range("H2") = avReturn
Sheets("Storico_CSV").Range("H3") = stDev
Sheets("Storico_CSV").Range("H4") = vrnc

End Sub
___________________________________

- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale -
Alexsandra non è collegato   Rispondi citando
Vecchio 08-11-2017, 21.13.35   #15
Gianca53
Newbie
 
Registrato: 31-10-2017
Messaggi: 18
Gianca53 promette bene
Rif: OverFlow, perchè ?

Grazie Alexandra, l'esempio era nel file che non sono riuscito ad allegare, comunque ciò che succede con nuovi dati è simile a :
Quota:
03/10/2017 3.51600 3.52600 3.47800 3.50000 3.50000 84424
04/10/2017 3.52000 3.64000 3.50000 3.60000 3.60000 528431
05/10/2017 3.60000 3.63000 3.57800 3.63000 3.63000 105169
06/10/2017 null null null null null null null null null
09/10/2017 3.61200 3.64000 3.60000 3.63000 3.63000 100570
10/10/2017 3.60000 3.62800 3.59400 3.61400 3.61400 59571
11/10/2017 3.62000 3.62200 3.56200 3.57400 3.57400 145759
12/10/2017 3.59600 3.60600 3.52000 3.52000 3.52000 152681
13/10/2017 3.56400 3.63000 3.52800 3.60600 3.60600 100436
16/10/2017 3.61800 3.62800 3.57200 3.60400 3.60400 110429
17/10/2017 3.62400 3.65600 3.57200 3.63200 3.63200 266612
18/10/2017 3.65000 3.65000 3.60200 3.63200 3.63200 101378
come vedi c'è la data ma non il valore, con frequenza / ubicazione del tutto random, quindi dovrei identificare tutto il range dei valori sino all'ultima riga utile e ragionare in termini di righe da saltare. E' questo il tuo pensiero?
Gianca53 non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
HeartBleed - Perchè così pericoloso ? LoryOne Sicurezza&Privacy 5 12-04-2014 21.16.17
Perchè le donne non sono come noi uomini? Kal-El Chiacchiere in libertà 16 14-10-2010 22.18.21
Orgoglio gay nella polizia... ma perché? Doomboy Chiacchiere in libertà 95 02-09-2008 21.07.56
Citazioni (2) Paul Muad'Dib Chiacchiere in libertà 552 31-07-2008 09.14.29
Sfoghi. Flying Luka Chiacchiere in libertà 1063 05-01-2006 23.56.34

Orario GMT +1. Ora sono le: 13.05.51.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.