Condividi:        

resa giornaliera

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

resa giornaliera

Postdi raimea » 09/07/25 16:36

ciao

tramite macro vorrei compilare il fgl entrate uscite
1_fare la resa giornaliera dal fgl massa_pari
e riportare in fgl ent_Usc:

A_la data in col D
B_il num delle puntate fatte nello stesso giorno
C_la resa positiva in col F se negativa col G

vi allego il file

https://www.dropbox.com/scl/fi/v98mmsvajqh7fykf9x6ra/resa_giornaliera.xlsm?rlkey=srasxyg4i77ydwaulpifmjxhv&st=0ymlfpow&dl=0

ciao
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: resa giornaliera

Postdi Anthony47 » 09/07/25 23:59

Si, ma che cosa si intende per "resa giornaliera"?
Avatar utente
Anthony47
Moderatore
 
Post: 19666
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: resa giornaliera

Postdi raimea » 10/07/25 20:44

ciao

Si, ma che cosa si intende per "resa giornaliera"?

vero !!! non l' avevo scritto !

per ogni data,
si deve fare la somma di col P di fgl massa_pari
e riportare data e somma algebrica in fgl entrate_uscite
scrivendo il risultato in col F se positivo
in col G se negativo

ciao
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago

Re: resa giornaliera

Postdi Anthony47 » 11/07/25 00:26

Prova con questa macro:
Codice: Seleziona tutto
Sub Daily_Yield()
Dim sDate As Range, dDate As Range
Dim dTot As Single, ODate
Dim I As Long, J As Long
Dim wArr(), wInd As Long
'
Set sDate = Sheets("massa_pari").Range("D17")       '<<< Dove cominciano le date su Massa_Pari
Set dDate = Sheets("Entrate_Uscite").Range("D7")    '<<< Dove cominciano le date su Entate_uscite
'
ReDim wArr(1 To sDate.End(xlDown).Row, 1 To 4)
'
For I = 1 To sDate.End(xlDown).Row
    If Len(sDate.Cells(I, 1).Value) < 2 Then Exit For
    ODate = Application.WorksheetFunction.CountIf(dDate.Resize(1000, 1), sDate.Cells(I, 1))
    If ODate = 0 And Application.WorksheetFunction.CountIf(sDate.Resize(I, 1), sDate.Cells(I, 1)) = 1 Then
        wInd = wInd + 1
        wArr(wInd, 1) = sDate.Cells(I, 1)
    End If
Next I
For J = 1 To wInd
    wArr(J, 2) = Application.WorksheetFunction.CountIf(sDate.Resize(I, 1), wArr(J, 1))
    dTot = Application.WorksheetFunction.SumIf(sDate.Resize(I, 1), wArr(J, 1), sDate.Offset(0, 12).Resize(I, 1))
    If dTot < 0 Then wArr(J, 4) = dTot Else wArr(J, 3) = dTot
Next J
dDate.Offset(1000, 0).End(xlUp).Offset(1, 0).Resize(wInd, 4).Value = wArr
End Sub

Il codice elabora solo le date che non sono ancora presenti su Entrate_Uscite, quindi, sul file che hai pubblicato ignorerebbe la data 5-luglio; non sarebbe difficile adottare logiche diverse, tipo "cancella l'elenco su Entrte_uscite e processa tutto l'elenco", oppure "mantieni l'elenco su Entrate_uscite ma ricalcola l'ultima data lì presente", o altre idee
Avatar utente
Anthony47
Moderatore
 
Post: 19666
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: resa giornaliera

Postdi raimea » 11/07/25 15:49

ciao
Perfetto ....

tutto ok

grazie
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago

Re: resa giornaliera

Postdi raimea » 11/07/25 16:14

ciao
facendo test mi sono accorto che da un errore run-time 1004
quando:
il fgl Entr_Usc e' gia compilato
e si blocca evidenziando l' ultima riga:

Codice: Seleziona tutto
dDate.Offset(1000, 0).End(xlUp).Offset(1, 0).Resize(wInd, 4).Value = wArr


forse serve un controllo ?

------------------------

INFO
negli ultimi giorni sto avendo molta difficolta a raggiungere il forum
ci sono problemi col server / capita anche ad altri ?

ciao
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago

Re: resa giornaliera

Postdi Anthony47 » 11/07/25 16:32

Negli ultimi giorni il server e' uno strazio... Il webmaster sta cercando di capire chi /che cosa va male...

Effettivamente serve un controllo: metti quella istruzione in un If /End If:
Codice: Seleziona tutto
If wInd > 0 Then
    dDate.Offset(1000, 0).End(xlUp).Offset(1, 0).Resize(wInd, 4).Value = wArr
Else
    MsgBox ("Date gia' tutte compilate")
End If

Non hai detto se e' giusto che le date gia' compilate in Entrate_Uscite vengano ignorate o debbano essere ricalcolate comunque
Avatar utente
Anthony47
Moderatore
 
Post: 19666
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: resa giornaliera

Postdi raimea » 11/07/25 17:24

ho fatto la modifica ora tutto ok

Non hai detto se e' giusto che le date gia' compilate in Entrate_Uscite vengano ignorate o debbano essere ricalcolate comunque


l' interpretazione fatta e' corretta cosi'.
le date gia elaborate vanno ignorate.

grazie
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago

Re: resa giornaliera

Postdi raimea » 23/08/25 20:34

ciao

vorrei aggiungere una cosa alla macro > la macro >> Sub Daily_Yield

Non hai detto se
e' giusto che le date gia' compilate in Entrate_Uscite
vengano ignorate o debbano essere ricalcolate comunque


1_col tempo mi son accorto che sarebbe meglio
ricalcolare la resa giornaliera ogni volta.

2_vorrei aggiunge al conteggio W_L giornaliero:
le vincite e le perdite di ogni giorno

da prelevare dal fgl massa_pari col O
e riportare nel fgl Entrate uscite col H_I

vi allego il file

https://www.dropbox.com/scl/fi/h8nbqmx70e6m6xcwm3iek/date_E_vincite_prdite.xlsm?rlkey=qhbap6objps4ki8h151tmuz4a&st=f44y3plw&dl=0

----------------------------
PS
vedo che nei miei post appare della pubblicita'
ma non l ho messa io .

ciao
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago

Re: resa giornaliera

Postdi Anthony47 » 23/08/25 22:18

Per il ricalcolo dall'inizio:
a) Commenta l'istruzione ODate
Codice: Seleziona tutto
    If Len(sDate.Cells(I, 1).Value) < 2 Then Exit For
'    ODate = Application.WorksheetFunction.CountIf(dDate.Resize(1000, 1), sDate.Cells(I, 1))
    If ODate = 0 And Application.WorksheetFunction.CountIf(sDate.Resize(I, 1), sDate.Cells(I, 1)) = 1 Then

b) Togli e Metti come segue:
Codice: Seleziona tutto
If wInd > 0 Then
'    dDate.Offset(1000, 0).End(xlUp).Offset(1, 0).Resize(wInd, 4).Value = wArr    'TOGLI
    dDate.Resize(wInd, 4).Value = wArr                                            'METTI
Else


Quanto a Guadagni /Perdite non e' chiaro quale e' la colonna su massa_pari da considerare e non e' chiaro se per una data si fa il totale di Guadagni e Perdite se si mette il risultato in colonna H oppure I, o se invece vanno fatte separatamente la somma ti tutti i Guadagni e tutte le Perdite e si compila sia la colonna H che I con le relative somme
Avatar utente
Anthony47
Moderatore
 
Post: 19666
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: resa giornaliera

Postdi raimea » 24/08/25 05:48

ciao

ho fatto le modifiche
e ho verificato che i conteggi
giornalieri vengono fatti
ogni volta si lancia la macro
quindi fin qui tutto ok

la colonna in massa_pari da considerare
per guadagni/perdite e' la col P

MA questi conteggi sono gia' fatti correttamente
(gia con vers precedente)
e la resa di un giorno se e' POSITIVA
la macro la riporta in col F di entrate_uscite
se la resa del giorno e' NEGATIVA la riporta
in col G

ora mi mancherebbe il punto 2

Quanto a Guadagni /Perdite non e' chiaro quale e' la colonna su massa_pari da considerare e non e' chiaro se per una data si fa il totale di Guadagni e Perdite se si mette il risultato in colonna H oppure I, o se invece vanno fatte separatamente la somma ti tutti i Guadagni e tutte le Perdite e si compila sia la colonna H che I con le relative somme


calcolare il numero per ogni giorno
di quante puntate ho = win e quante =lose

rilevandole da fogl massa_pari col O
e compilando entrate_uscite mettendo
il numero totale delle win in col H
le lose in col I

ciao
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago

Re: resa giornaliera

Postdi Anthony47 » 24/08/25 12:13

Quindi bisogna solo contare per ogni giorno quante vincite e quante perdite e riportarle su Entrate_Uscite

La nuova macro complessiva:
Codice: Seleziona tutto
Sub Daily_Yield()

Dim sDate As Range, dDate As Range
Dim dTot As Single, ODate
Dim I As Long, J As Long
Dim wArr(), wInd As Long
'-------------------------------------
'   luglio 2025
'    pc-facile by antony47
'    https://www.pc-facile.com/forum/viewtopic.php?f=26&t=113630&p=668981#p668981
'---------------------------------------



Set sDate = Sheets("massa_pari").Range("D17")       '<<< Dove cominciano le date su Massa_Pari
Set dDate = Sheets("Entrate_Uscite").Range("D7")    '<<< Dove cominciano le date su Entate_uscite
'
'ReDim wArr(1 To sDate.End(xlDown).Row, 1 To 4)             'TOGLI
ReDim wArr(1 To sDate.End(xlDown).Row, 1 To 6)              'METTI
'
'Calcola le date:
For I = 1 To sDate.End(xlDown).Row
    If Len(sDate.Cells(I, 1).Value) < 2 Then Exit For
'    ODate = Application.WorksheetFunction.CountIf(dDate.Resize(1000, 1), sDate.Cells(I, 1))                    'TOGLI                                     'TOLTA
    If ODate = 0 And Application.WorksheetFunction.CountIf(sDate.Resize(I, 1), sDate.Cells(I, 1)) = 1 Then
        wInd = wInd + 1
        wArr(wInd, 1) = sDate.Cells(I, 1)
    End If
Next I
'
'Calcola i valori:
For J = 1 To wInd
    wArr(J, 2) = Application.WorksheetFunction.CountIf(sDate.Resize(I, 1), wArr(J, 1))
    dTot = Application.WorksheetFunction.SumIf(sDate.Resize(I, 1), wArr(J, 1), sDate.Offset(0, 12).Resize(I, 1))
    If dTot < 0 Then wArr(J, 4) = dTot Else wArr(J, 3) = dTot
    wArr(J, 5) = Application.WorksheetFunction.CountIfs(sDate.Resize(I, 1), wArr(J, 1), sDate.Offset(0, 11).Resize(I, 1), "win")    'METTI
    wArr(J, 6) = Application.WorksheetFunction.CountIfs(sDate.Resize(I, 1), wArr(J, 1), sDate.Offset(0, 11).Resize(I, 1), "lose")   'METTI
Next J
'
'Pubblica i risultati:
If wInd > 0 Then
'    dDate.Offset(1000, 0).End(xlUp).Offset(1, 0).Resize(wInd, 4).Value = wArr    'TOGLI
    dDate.Resize(wInd, 6).Value = wArr                                            'METTI
Else
    MsgBox ("Nessuna data da compilare!??")
End If
Beep
End Sub

Le modifiche sono indicate dai TOGLI /METTI; ovviamente le righe TOGLI possono essere eliminate dal listato
Avatar utente
Anthony47
Moderatore
 
Post: 19666
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: resa giornaliera

Postdi raimea » 24/08/25 15:35

ciao

Quindi bisogna solo contare per ogni giorno quante vincite e quante perdite e riportarle su Entrate_Uscite

esatto.

e' tutto ok

grazie
S.O. win11, Excell 2021
Avatar utente
raimea
Utente Senior
 
Post: 1483
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "resa giornaliera":

Newsletter giornaliera?
Autore: webmaster
Forum: Discussioni
Risposte: 30

Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti