somma elementi di un array

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

somma elementi di un array

Messaggio da Raoul Duke »

Salve.. come mai l'output di questo codice:

Codice: Seleziona tutto

print somma(0)
print somma(8)
				somma(0)=somma(0)+2
print somma(0)
print somma(8)
mi da
0
0
2
2?

non dovrebbe darmi
0
0
2
0?
perche il 2 lo somma a tutti i valori dell'array e non solo a quello indicizzato 0?
va usata una sintassi diversa per sommare 2 al solo primo elemento dell'array somma?
grazie
OpenOffice 4.1.5 con MacOS 10.13.6
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2996
Iscritto il: martedì 18 maggio 2010, 17:01

Re: somma elementi di un array

Messaggio da lucky63 »

.
Con:

Codice: Seleziona tutto

Sub TestDiVerifica
Rem Link del quesito: https://forum.openoffice.org/it/forum/viewtopic.php?f=9&t=11373
Dim somma(10)
print somma(0)
print somma(8)
            somma(0)=somma(0)+2
print somma(0)
print somma(8)
End sub
a me restituisce correttamente valore 2 solo sul secondo "print somma(0)" sia con LibreOffice 7.2.1. che con OpenOffice 4.1.9.
.
Allegati
Test - VerificaValoriSommatiInArray.ods
(10.66 KiB) Scaricato 71 volte
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2996
Iscritto il: martedì 18 maggio 2010, 17:01

Re: somma elementi di un array

Messaggio da lucky63 »

.
Quasi 20 giorni senza risposta ...
...
Raoul Duke
Messaggi: 132
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: somma elementi di un array

Messaggio da Raoul Duke »

non so che dire,
non so perchè ma a me con lo stesso codice restituisce 2 ad entrambi i valori somma(0) e somma(2).
in particolare allego il doc in cui sto utilizzando questa funzione .
nei fogli "ENTRATE" e "USCITE" infatti ogni mese mi somma gli ingressi non indipendentemente ma sommandoli a quelli del mese precedente (ad esempio nel foglio ENTRATE nella cella M5, eseguendo la macro dovrebbe comparire il valore 5, invece compare 45 perché, modificando erroneamente tutti i campi dell'array contemporaneamente invece che solo quello desiderato, il valore dell'array somma(10) al momento di aggiungerci il valore 5 non risultava vuoto ma già col valore 40 inserito quando invece il codice avrebbe dovuto modificare solo il valore somma(8) ).
non so se mi sono spiegato...
grazie mille
Allegati
bilancio.ods
(32.93 KiB) Scaricato 64 volte
OpenOffice 4.1.5 con MacOS 10.13.6
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2996
Iscritto il: martedì 18 maggio 2010, 17:01

Re: somma elementi di un array

Messaggio da lucky63 »

.
Ho curiosato nella tua macro.
Alla fine per seguirne meglio la sua logica l'ho quasi completamente riscritta a mio modo rendendola più comprensibile.
Vedere i vari commenti al suo interno.
Ho fatto anche qualche altra piccola modifica grafica e aggiunto altri dati fittizi per dei test che mi sembrano OK.
Fai test al riguardo e fai sapere.

P.S.: spero che questa volta mi darai un riscontro quanto prima (e non risponderai tra un mese).
.
Allegati
Test - Macro - GestioneRiepilogoBilancioPerCategorie.ods
(35.59 KiB) Scaricato 67 volte
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: somma elementi di un array

Messaggio da geovign »

Ciao @lucky63,
per curiosità, il motivo per cui il cui codice di @Roul Duke non funziona è imputabile alla riga "SOMMA=0" ?
Immagino che con tale riga intendesse "azzerare" tutti i valori contenuti nell'array "somma()" , invece cosa comporta ai fini del codice?
Scusa per l'intromissione.
Saluti
Geo
LibO 7 su LinuxMint 21
Avatar utente
lucky63
Volontario assiduo
Volontario assiduo
Messaggi: 2996
Iscritto il: martedì 18 maggio 2010, 17:01

Re: somma elementi di un array

Messaggio da lucky63 »

.
Ciao @georvign.

Se fai una piccola macro di prova sia “Somma=0” che “Somma()=0” sembrano funzionare correttamente azzerando l'array.
Ma in un contesto più elaborato come quello del file di @Roul Duke sembra non avere effetto.
Per verificare meglio ciò e il suo corretto posizionamento nei cicli nidificati avevo riscritto il codice a mio modo per averlo più comprensibile.
Anche li però sia “Somma=0” che “Somma()=0” sembra che NON funzionassero.

Nel mio esempio ha funzionato invece correttamente sostituendo “Somma=0” (ma anche fosse “Somma()=0” ) con una delle tre seguenti impostazioni:

Codice: Seleziona tutto

'1 - Ciclo di azzerramento così impostato:
For x = 1 To 12
Somma(x) = 0
Next

'2 - Ciclo di azzerramento così impostato:
For x = 1 To 12
Erase somma(x)
Next

'3 - Ridimensionamento della matrice
Redim Somma(12)
Il risultato finale nei fogli Entrate/Uscite è quello voluto da @Roul Duke (almeno così mi sembra dai test che ho fatto con i dati fittizi inseriti).

Il file di @Roul Duke funziona (come da file in allegato) sostituendo le varie righe contenti le istruzioni:

Codice: Seleziona tutto

SOMMA = 0
Con

Codice: Seleziona tutto

Redim SOMMA(11)
e

Codice: Seleziona tutto

Xcell.value=SOMMA
con

Codice: Seleziona tutto

Xcell.value=SOMMA(Mese)
.
Allegati
bilancio-01.ods
(31.26 KiB) Scaricato 58 volte
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: somma elementi di un array

Messaggio da geovign »

Grazie @luky63 per la spiegazione.
Saluti
Geo
LibO 7 su LinuxMint 21
Rispondi