Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-05-2007, 19:01   #1
GlasgowKiss
Junior Member
 
Iscritto dal: May 2007
Messaggi: 5
[EXCEL] Sommare celle in un intervallo stabilito che rispettino dei parametri

Salve, ho un problema, difficile spiegarlo nel topic:

gestisco classifiche ecc per scommesse sportive, vorrei cambiare metodo, cioè ricavare tutta la classifica attraverso i semplici risultati di ogni giornata.
ho ricavato tutto quanto (vittorie, sconfitte, pareggi ecc) mi manca solo la somma gol.

ho ad esempio questo:

Squadra1 - squadra2 2 - 0
Squadra2 - squadra3 0 - 0
Squadra4 - squadra2 1 - 2

ripetuto ovviamente per tutte le giornate di un campionato.


come faccio a far sommare automaticamente tutti i gol che ha fatto squadra1,2 ecc??


in modo da avere la classifica completa dei gol fatti e subiti...

si potrebbe fare selezionando manualmente tutte le celle con i risultati di ogni squadra, ma sarebbe un lavoro sporco,nonchè lunghissimo, lo scopo è automatizzare tutto quanto e far ricercare le giuste caselle da sommare.


qualcuno ha la soluzione?
GlasgowKiss è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 23:28   #2
GlasgowKiss
Junior Member
 
Iscritto dal: May 2007
Messaggi: 5
raga, ma nessuno sa un metodo?
GlasgowKiss è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2007, 09:34   #3
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
quello che vuoi fare tu si può soltanto se conosci il vba (Visual Basic for Applications) che sta dietro ad Excel e a tutti i software del pacchetto Office.

Così su due piedi mi verrebbe una soluzione di questo tipo: si potrebbe creare una collezione di interi, indicizzabile col nome delle squadre, e ogni volta che una di queste compare in una delle partite, aggiunge al relativo nodo della collezione i gol fatti...

il problema principale sta sul fatto che ci sono (come al solito quando si ha a che fare con automazione su Excel) delle difficoltà implementative dovute a come il foglio è organizzato.
Mi spiego meglio: come sono memorizzati i risultati delle partite?

in un'unica cella? quindi in (ad es.) B10 = "squadra1 - squadra2 = 3-0"

in celle separate? quindi B10 = squadra1 ; C10 = squadra2 ; D10= 3 ; E10 = 0

o in quale altro modo?
...più dati ci sono per cella, più difficile è estrarli, e più possibilità ci saranno che l'algoritmo che esegue il calcolo dia errori imprevisti (ad es: cosa succede se ad un certo punto il separatore delle squadre diventa ":" invece che "-")...tanto per farti capire con un esempio: assumiamo che i dati sian 2 celle separate, in questo modo:

B10 = "squadra1 - squadra2"
C10 = "3 - 0"

bene, per riuscire a carpire i dati che ci interessano occorrerebbe fare un algoritmo di questo tipo (pseudocodice):

Codice:
1)while(isnull(B10)= false)    /*esegue il ciclo finchè non incotra una cella vuota*/

2) nome_squadra = estrai la stringa più lunga dalla cella B10, a SINISTRA del "-"

3) gol_squadra = estrai la stringa più lunga dalla cella C10, a SINISTRA del "-"

4) lista_gol_squadre(nome_squadra).golFatti = lista_gol_squadre(nome_squadra).golFatti
 + Converti_In_Intero(gol_squadra)

5)nome_squadra = estrai la stringa più lunga dalla cella B10, a DESTRA del "-"

6)gol_squadra = estrai la stringa più lunga dalla cella C10, a DESTRA del "-"

7) lista_gol_squadre(nome_squadra).golFatti = lista_gol_squadre(nome_squadra).golFatti 
+ Converti_In_Intero(gol_squadra)

8)fine_ciclo_while
Ipotizzando, naturalmente, che tale ciclo si fermi non appena trova una cella vuota, cioè non ci sono più partite da calcolare.

io l'idea l'ho lanciata, bisogna vedere se tu conosci il vba oppure no...
__________________

Ultima modifica di akyra : 18-05-2007 alle 09:47.
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2007, 11:07   #4
GlasgowKiss
Junior Member
 
Iscritto dal: May 2007
Messaggi: 5
dunque, grazie innazitutto per la risposta.

allora ho giò provveduto ad estrarre il tutto in modo da avere in ogni cella un singolo dato, la situazione al momento è questa:

esempio

|SQUADRA1|....|SQUADRA2|...|2|...|0|

(i puntini sono giusto per far capire il distaco tra le celle)


ho piu o meno capito quello che intendi (qualcosa di VB ne mastico, ma applicato ai fogli di excel ho poca esperienza), l'unica cosa è che facendo come dici, dovrei scrivere una riga di codice per ogni partita giocata, tipo se son 300 partite, devo scrivere un'algoritmo per ognuna o sbaglio?


#edit

uhm no scusami, non avevo letto del ciclo finche trova una cella vuota!

allora il quesito è un'altro

se tipo le giornate del campionato sono poste cosi:
GIORNATA 1

A-B 2-0
C-D 0-0

GIORNATA 2

A-B 0-0
ecc ecc

cioè tra una giornata e l'altra c'è uno spazio, quindi il ciclo si fermerebbe no?

Ultima modifica di GlasgowKiss : 18-05-2007 alle 11:09.
GlasgowKiss è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2007, 20:55   #5
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
per come è concepito il cilco ora sì...se poi vuoi mettere un'altra condizione di fine ciclo, allora se ne può parlare...però su due piedi mi veniva quella...
come hai potuto notare la prima necessità da soddisfare sta nel mettere il foglio in un ordine coerente che sia sempre costante.
__________________
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2007, 22:41   #6
GlasgowKiss
Junior Member
 
Iscritto dal: May 2007
Messaggi: 5
uhm ok...diciamo che il foglio è ben ottimizzato,

mi daresti solo una mano a buttare giu un po di codice?
giusto il tempo che prendo un po di dimestichezza con il vba.


io ora ho il foglio in queste due forme:

forma 1:

|squadra1 - squadra2|...|0-0|

e nella forma 2:

|squadra1|...|squadra2|...|0|...|0|


quale mi conviene usare?

GlasgowKiss è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2007, 10:56   #7
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
certamente!
soltanto che in questo preciso momento il tempo che ho è molto poco...da martedì ne avrò di più.

sarebbe meglio utilizzare il secondo layout, in quanto più semplice da manipolare. Infatti non richiede l'estrazioni dei dati da una stringa con altri valori, in quanto il dato nella cella è solamente "squadra1" oppure il risultato.

Per prima cosa bisogna inizializzare la struttura che conterrà i gol fatti di ogni squadra.
Quello che mi verrebbe da utilizzare è una collezioni di valori definiti da noi stessi.

Quindi prima di tutto creiamo un oggetto personalizzato che conterrà i dati.
Pertanto crei un nuovo modulo di classe, e sulla sua proprierà name lo chiami "datiSquadra".
Nel oggetto in questione inserisci
Codice:
public    golFatti As Integer
public    golSubiti As Integer
End Type
questa oggetto è una struttura dati contenente due interi (golfatti e golsubiti).
A questo punto definiamo la vera e propria funzione che inizializza la collezione delle squadre:

Codice:
Public Sub initStruttura(coll As Collection)
Dim datiSq As new datiSquadra
'per ogni squadra crea un nodo della collezione
End Sub
Questa routine pubblica prende come parametro una collezione a cui aggiungerà i nodi delle squadre.
qui dobbiamo metterci d'accordo su dove andare a reperire l'elenco delle squadra, e creeremo un ciclo che farà una cosa di questo tipo:

Codice:
while (ci sono squadre)
datiSq.golFatti =  0
datiSq.golSubiti =  0
coll.add datiSq, "nome_della_squadra"
questo pseudocodice ci dice che alla collezione viene aggiunto un nuovo nodo, con chiave "nome_della_squadra" (che deve essere univoco!!quindi 1 soltanto per ogni squadra), nel quale viene inserita la struttura da noi definita per memorizzare i gol fatti e subiti.
__________________

Ultima modifica di akyra : 19-05-2007 alle 10:59.
akyra è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2007, 11:57   #8
GlasgowKiss
Junior Member
 
Iscritto dal: May 2007
Messaggi: 5
beh certo, ovviamente nei momenti in cui hai tempo eh ti ringrazio


allora il tuo metodo mi sembra più che azzeccato, teoricamente ci sono,è molto chiaro, adesso devo solo capire come effettuare praticamente l'estrapolazione dei dati dai fogli di lavoro...

non ho ben capito questa riga però:

Dim datiSq As new datiSquadra

cioè per ogni squadra verrà creato un datiSq o cosa?

poi per comodità ho piazzato i risultati nel foglio "risultati", e le classifiche nel foglio "classifiche".

cmq grazie ancora eh, intanto vedo di smanettare e di cavarci qualcosa..
GlasgowKiss è offline   Rispondi citando il messaggio o parte di esso
Old 19-05-2007, 12:36   #9
akyra
Senior Member
 
L'Avatar di akyra
 
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
azz, ho fatto un errore...

l'istruzione

Codice:
Dim datiSq As New datiSquadra
dichiara una variabile di tipo datiSquadra e inserisce un nuovo oggetto datiSquadra nella variabile...e come se tu dichiarassi di voler avere un contenitore per scarpe e poi ci mettessi dentro effettivamente le scarpe
anche se questo è giusto dal punto di vista sintattico, è concettualemente sbagliato in quanto devo creare un nuovo oggetto datiSquadra per ogni nuovo nodo della collezione...invece con quel codice assegneremmo ad ogni nodo lo stesso oggetto datiSquadra, di conseguenza se andassimo a aumentare i gol fatti di una certa squadra (nel nodo specifico della collezione) andremmo ad aumentare anche i gol di tutte le altre squadre.
In pratica ogni nodo squadra punterebbe allo stesso oggetto datiSquadra, invece che ad uno suo specifico.

quindi bisogna correggere il codice in questo modo:

Codice:
Public Sub initStruttura(coll As Collection)
Dim datiSq As datiSquadra
'per ogni squadra crea un nodo della collezione
'nel ciclo esegui questa istruzione
set datiSq = new datiSquadra
'ecc ecc...
End Sub
la variaible datiSq viene inizializzata di volta in volta con un nuovo oggetto datiSquadra.
...questa è la teoria alla base della programmazione ad oggetti...
__________________

Ultima modifica di akyra : 19-05-2007 alle 12:44.
akyra è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
SpaceX annuncia l'undicesimo volo del ra...
CMF lancia le sue prime cuffie over-ear:...
Condannata a Londra la protagonista dell...
Addio Amazon? ChatGPT ora ti fa comprare...
YouTube chiude la causa con Trump: accor...
Avio: contratto da 40 milioni di € da ES...
Claude Sonnet 4.5, il nuovo modello di A...
Silent Hill f è un successo: gi&a...
Nuova Jeep Compass: aperti i preordini p...
La PS5 Slim con SSD più piccolo s...
Zero combustibili fossili e controllo qu...
Corsair NAUTILUS 360 RS LCD: raffreddame...
Nuovo record nel mondo dei computer quan...
Sony e Universal combatteranno l'IA con....
Il Chips Act europeo attuale è un...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v