Condividi:        

Leggere dati in colonna e fare calcoli

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

Leggere dati in colonna e fare calcoli

Postdi ikwae » 15/02/20 22:59

Ciao a tutti e bene ritrovati, dopo una lunga assenza per motivi dì lavoro, sono ancora qui a chiedere il vostro prezioso aiuto.
Ho chiuso con i vecchi progetti perché le vincite non andavano oltre al caffè.
Ho iniziato un nuovo progetto, con nome UnoUno ossia partendo dalla vincita arrivare alla ruota e cinquina che l’ha generata.
Quindi ho realizzando 594 cinquine e, confrontandole con le estrazioni reali, ho avuto dei risultati soddisfacenti
di 4 quaterne, 174 terni e 5.415 ambi per un totale di 5.593 vincite in continuo aumento man mano che si confrontano con
le nuove estrazioni. Quindi 5.593:594 = 9,14 vincite a cinquina e, di conseguenza, le domande sono:
1) c’è qualche vincita che si ripete su ruota o altre ruote, nella stessa posizione, dopo una o più estrazioni?
2) c’è qualche vincita che si specchia per riflesso con altre vincite, nella stessa posizione, sulla stessa ruota o altre ruote dopo una o più estrazioni?
3) c’è qualche vincita che con evento di altre vincite possa dare indicazioni sulla posizione di ruota e cinquina nel corso delle estrazioni?
4) c’è qualche vincita che per simbiosi “sposa” altre situazioni che danno indicazioni della posizione della cinquina nel corso delle estrazioni?
5) c’è qualche ….
Basterebbe una sola indicazione per avere la ruota e la cinquina che ha generato la vincita, indipendentemente dai numeri, serve solo la posizione o evento e di conseguenza si ricava ruota e cinquina. Ho realizzato una tabella riportante tutti i dati e qui se c’è qualcuno che può dare un suggerimento o aiuto su come leggere o organizzare i dati e molto gradito e apprezzato. È importante “leggere” i dati al fine di avere qualche indicazione dei punti su citati.Una semplice lettura e quella di trovare un ambo sulla stessa ruota che si ripeta nelle estrazioni future. Quindi ho realizzato una macro “casareccia” e la faccio girare a “mano” 11 volte (non sono capace di renderla dinamica, per il momento, ma funziona) questa macro legge solo gli ambi e li scrive in colonna sul foglio Tabella ogni colonna è numerata e assegnata a una riga della tabella e ha il dettaglio delle vincite di ogni riga quindi una colonna per ogni riga della tabella. L’aiuto che cerco è una macro per leggere questi dati in colonna sul foglio Tabella. Per evitare di scrivere un “tema” ho dettagliato sul foglio Tabelle, in allegato,cosa cercare, fare i calcoli e scrivere sulla stessa colonna, lasciando una cella libera, riportare solo la prima istanza trovata e sotto mettere quanti estrazioni sono passate per lo stesso ambo e l’ambo successivo. L’allegato ha 4 fogli
1) foglio “Uso” dove c’è la tabella delle estrazioni e vincite.
2) foglio “Tabella” dove ci sono le colonne originali con tutte le vincite dell’ambo, ruota per ruota, in ogni colonna numerata.
3)foglio “tabella _INFO” dove sono riportate le indicazioni e spiegazioni (almeno lo spero) di cosa fare e cosa scrivere.
HO riportato solo qualche esempio sporadico sulla ruota di Bari e qualche cosa sulla ruota di Cagliari solo per capire la dinamica di cosa si deve fare.
4) foglio “Tabella-FINE” quello che si desidera che la macro faccia. Anche qui qualche indicazione sulla ruota di Bari per dare l’idea di quello che si vuole ottenere.
Ringraziando tutti anticipatamente per l’aiuto gradito e apprezzato che mi viene dato. 73 ikwae

link per allegato
http://www.filedropper.com/zzzzunounohelprete
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14

Sponsor
 

Re: Leggere dati in colonna e fare calcoli

Postdi Anthony47 » 16/02/20 21:21

Hummm...
Perdona, non ho capito quali sono i dati di partenza ne' il significato di quanto inserito sul file che hai allegato: parli di 594 cinquine buone, ma non le vedo; ne' vedo l'archivio delle intestazioni con cui confrontarle; insomma mi sono perso nel vento.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Leggere dati in colonna e fare calcoli

Postdi ikwae » 16/02/20 22:28

Ciao Anthony47 gentile come sempre a rispondermi.
Il foglio "Uso" e solo come dimostrazione di come è stata fatta la raccolta dei dati e non serve al fine dell'aiuto che cerco. Per sapere cosa fare per aiutarmi devi solo leggere le procedure sul foglio "Tabella_INFO" e, finita la macro di aiuto, farla girare sul foglio "Tabella" e controllare se i risultati coincidono con i pochi dati che io ho inserito a mano sul foglio "Tabella-FINE". Tutto il resto è stato necessario da scrivere per spiegaare come e cosa ho fatto per arrivare alla Tabella. 73 ikwae
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14

Re: Leggere dati in colonna e fare calcoli

Postdi Anthony47 » 17/02/20 23:45

Ok, quindi guardo solo il contenuto del foglio Tabella e cerco di decodificare le note su Tabella_INFO.


1) Partire dalla prima colonna e leggere l'inestazione di appartenenza della colonna
in questo caso Bari e controllare nelle celle se ci sono almeno due o più istanze
altrimenti lascia la colonna intatta e passa alla prossima colonna

Immagino che significhi "controllare che dopo riga 1 ci siano almeno altre 2 righe in quella colonna con la stessa ruota presente in riga 1"

2) trovate due o più celle con la stessa ruota deve controllare che le istanze abbiano la stessa
indicazione sul codice e sulla ruota se sono omogenei si passa al punto tre
altrimenti lascia la colonna intatta e va alla alla prossima colonna

Qui per me e' un po' piu' difficile... Che significa "avere la stessa indicazione sul codice"?


3) nel caso in cui sia il codice che la ruota siano uguali la macro esegue le seguenti fasi:
a) copiare la prima istanza in fondo alla lista della colonna lasciando una cella vuota
b) fare i calcoli come è riportato negli esempi e scrivere in celle separate i numeri

Piu' o meno lo capisco.
Capisco anche, come scrivi in B24, "Concorso 144 al concorso 153= 9"
Nel "NB" e' anche descritto come contare affinche' torni il concetto che "Concorso 142 al concorso 002= 17"

Insomma fatti sentire col chiarimento chiesto al "punto 2)" e vedremo che fare.

Nel frattempo ti do' alcuni numeri buoni: 1-2-3-4-5 da giocare su tutte le ruote di Biella e provincia :D :D

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

Re: Leggere dati in colonna e fare calcoli

Postdi ikwae » 18/02/20 11:18

Ciao, cerco di aggiungere ulteriori chiarimenti alle tue domande.
1) Partire dalla prima colonna e leggere l'inestazione di appartenenza della colonna
in questo caso Bari e controllare nelle celle se ci sono almeno due o più istanze
altrimenti lascia la colonna intatta e passa alla prossima colonna

Immagino che significhi "controllare che dopo riga 1 ci siano almeno altre 2 righe in quella colonna con la stessa ruota presente in riga 1"

si esatto
2) trovate due o più celle con la stessa ruota deve controllare che le istanze abbiano la stessa
indicazione sul codice e sulla ruota se sono omogenei si passa al punto tre
altrimenti lascia la colonna intatta e va alla alla prossima colonna

Qui per me e' un po' piu' difficile... Che significa "avere la stessa indicazione sul codice"?

Insomma fatti sentire col chiarimento chiesto al "punto 2)" e vedremo che fare.


Per “leggere” questa mole di dati bisogna specificare tutto altrimenti non si riescono a capire i dati in colonna.
Il codice, presente in ogni intestazione di riga, riportato in colonna A, della tabella sul foglio “Uso” comprende
1)l’indicazione della ruota
2)il gruppo di appartenenza ossia 2 o 1 o 0 delle 18 cinquine
3)il numero della cinquina che ha generato la vincita.

Per capire meglio questo è il codice BA_Gr2_C-01 oppure CA_Gr1_C-07 oppure RN_Gr0_C-18
presente in ogni cella di ogni colonna. Quindi sono da prendere in ogni colonna quelli riferiti alla ruota, intestataria
della colonna in esame ossia sono da prendere in ogni colonna che riporta Bari, da due o più istanze, come segue
BA_Gr2_C-04 - 142 ambo Bari
BA_Gr2_C-04 - 002 ambo Bari
BA_Gr2_C-04 - 004 ambo Bari
Da non conteggiare perché non riportano la stessa ruota
BA_Gr2_C-01 - 147 ambo Cagliari
BA_Gr2_C-01 - 018 ambo Cagliari

Lo stesso per tutte le altre ruote presenti in ogni propria colonna. Vediamo ancora un esempio sulla ruota di Milano
Da conteggiare
MI_Gr1_C-07 - 144 ambo Milano
MI_Gr1_C-07 - 148 ambo Milano
Da non conteggiare perché non riportano la stessa ruota
MI_Gr1_C-07 - 142 ambo Firenze
MI_Gr1_C-07 - 016 ambo Firenze
Capisco anche, come scrivi in B24, "Concorso 144 al concorso 153= 9"
Nel "NB" e' anche descritto come contare affinche' torni il concetto che "Concorso 142 al concorso 002= 17"

ok per i conteggi
Nel frattempo ti do' alcuni numeri buoni: 1-2-3-4-5 da giocare su tutte le ruote di Biella e provincia :D :D

Terrò in considerazione i tuoi numeri buoni ma preferisco giocare i miei, anche se gioco raramente il minimo consentito.
Tutto questo “studio” è solo ed esclusivamente a uso didattico e non certo ad invogliare a giocare.
Ringraziandoti per il tempo che mi stai dedicando 73 ikwae
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14

Re: Leggere dati in colonna e fare calcoli

Postdi Anthony47 » 19/02/20 01:54

Non so se ho capito, comunque prova con questa, da avviare avendo attivo il foglio Tabella (o meglio: una sua copia):
Codice: Seleziona tutto
Sub GodSaveIkWae()
Dim I As Long, mySplitA, mySplitB, cRt As String, ctA As Long, ctB As Long, Delta As Long
Dim FixB As Long, Flagg As Boolean, J As Long
'
FixB = 157
'
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
    cRt = Trim(Mid(Cells(1, I), InStrRev(Cells(1, I).Value, " ", , vbTextCompare)))
    For J = 2 To Cells(Rows.Count, I).End(xlUp).Row - 1
        mySplitA = Split(Cells(J, I).Value & " - ", " - ", , vbTextCompare)
        mySplitB = Split(Cells(J + 1, I).Value & " - ", " - ", , vbTextCompare)
        If mySplitA(0) = mySplitB(0) And _
          InStr(1, Cells(J, I), cRt, vbTextCompare) > 0 And InStr(1, Cells(J + 1, I), cRt, vbTextCompare) > 0 Then
            If Not Flagg Then Cells(Rows.Count, I).End(xlUp).Offset(2, 0) = Cells(J, I)
            'Calcolo Delta
            ctA = CLng(Left(mySplitA(1), 3))
            ctB = CLng(Left(mySplitB(1), 3))
            If ctB > ctA Then
                Delta = ctB - ctA
            Else
                Delta = ctB - ctA + FixB
            End If
            Cells(Rows.Count, I).End(xlUp).Offset(1, 0) = Delta
            Flagg = True
        End If
    Next J
    Flagg = False
Next I
MsgBox ("Completato...")
End Sub


Se non fornisce i dati richiesti allora spiega con un paio di esempi che cosa ti e' stato restituito, che cosa volevi invece vedere e perche'

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

Re: Leggere dati in colonna e fare calcoli

Postdi ikwae » 19/02/20 19:12

Ciao.
Se non fornisce i dati richiesti allora spiega con un paio di esempi che cosa ti è stato restituito, che cosa volevi invece vedere e perché'

Ho provato la macro è istantanea fa i conteggi giusti è quello che cercavo fino a tutte le colone di Venezia (in totale 570 colonne).
Mentre per le sole colonne della ruota di Rn (solo 56 colonne) sono errate scrive il contenuto della prima cella e poi a iosa fa conteggi di tutte le altre celle, comprese nella stessa colonna, come se fossero della stessa ruota. Dopo alcune prove ho visto l’errore sull’intestazione colonna perché riporta Rn (che è corretto) mentre in cella l’ambo viene assegnato(erroneamente) Nz.
Questa diversità di nome ruota non “giustifica” i conteggi errati della macro perché se lavorasse come ha interpretato le altre ruote fino a Venezia(giuste) dovrebbe lasciare la colonna “intatta” perché, non trovando istanze della stessa ruota dovrebbe andare avanti alla prossima colonna lasciandola intatta. Ho “manomesso” le scritte Nz con la scritta Roma e la macro ha fatto il suo atteso lavoro con conteggi giusti. Tuttavia corretto l’errore Nz in Rn e, fatta girare la macro, il risultato non cambia è identico alla prima prova è giusto fino a Venezia e poi per la sola ruota Rn fa le stesse scritte errate di prima.

Allego un file contenete un foglio della nuova e corretta tabella, un foglio con la sola ruota Rn (poche colonne per capire l’errore) e un foglio della Rn con le stesse colonne errate ma corrette a mano. Ringraziandoti per il tempo che mi stati dedicando 73 ikwae

http://www.filedropper.com/unounomacroa ... taperrete2
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14

Re: Leggere dati in colonna e fare calcoli

Postdi Anthony47 » 20/02/20 00:11

Non ho avuto tempo di guardare il nuovo file, ma credo che si risolva modificando questa istruzione:
Codice: Seleziona tutto
        If mySplitA(0) = mySplitB(0) And _
          InStr(1, mySplitA(1), cRt, vbTextCompare) > 0 And InStr(1, mySplitB(1), cRt, vbTextCompare) > 0 Then       '<<VEDI MODIFICHE
Ovviamente l'indicazione deve essere coerente tra la testata e i risultati sottostanti; io ho provato sostituendo gli "nz" con "Rn"

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

Re: Leggere dati in colonna e fare calcoli

Postdi ikwae » 20/02/20 14:05

Ciao. Con la modifica è tutto a posto fa i conteggi giusti di tutte le colonne come da richiesta quindi
non mi resta che ringraziarti mille e mille volte per il tempo molto gradito e apprezzato che mi hai dedicato.

Se mi permetti, e senza abusare della tua immensa pazienza, vorrei chiedere una modifica alla macro, solitamente non chiedo di modificare le macro ma aprendo un altro trend più avanti per chiedere aiuti similari a questa macro mi sembra sciocco e oltretutto farei perdere del tempo a chi mi aiuta perché dovrebbe rivalutare il tutto mentre adesso che la macro c’è e si conosce la procedura della macro e i conteggi che devono fare è più semplice.

La modifica della macro consiste:
1) leggere ogni colona
2) individuare nelle celle le ripetizioni delle ruote da 2 in su
3) lasciare una cella libera a fine colona
4) riportare la prima istanza di ogni ruota della/e ripetizione/i
5) fare i conteggi

in una colonna una possibile combinazione
BA_Gr2_C-04 - 142 ambo Bari
BA_Gr2_C-04 - 148 ambo Bari
BA_Gr2_C-04 - 004 ambo Bari
BA_Gr2_C-01 - 156 ambo Napoli
BA_Gr2_C-01 - 147 ambo Cagliari
BA_Gr2_C-01 - 018 ambo Cagliari

lasciare una riga e poi tutto di seguito
BA_Gr2_C-04 - 142 ambo Bari
6
13
BA_Gr2_C-01 - 147 ambo Cagliari
28

Altro esempio di altra colonna
MI_Gr1_C-07 - 144 ambo Milano
MI_Gr1_C-07 - 148 ambo Milano
MI_Gr0_C-10 - 153 ambo Napoli
MI_Gr1_C-07 - 142 ambo Firenze
MI_Gr1_C-07 - 016 ambo Firenze
MI_Gr0_C-13 - 153 ambo Torino
MI_Gr0_C-14 - 016 ambo Venezia
MI_Gr0_C-18 - 146 ambo Rn
MI_Gr0_C-18 - 003 ambo Rn
MI_Gr0_C-18 - 007 ambo Rn

lasciare una riga e poi tutto di seguito
MI_Gr1_C-07 - 144 ambo Milano
4
MI_Gr1_C-07 - 142 ambo Firenze
31
MI_Gr0_C-10 - 146 ambo Rn
14
4

Allego un file per eventuale prove.

Ancora mille grazie per l’aiuto e la disponibilità. 73 ikwae

http://www.filedropper.com/richiestadim ... acrofinita
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14

Re: Leggere dati in colonna e fare calcoli

Postdi Anthony47 » 20/02/20 19:09

Mi pare che questa variante debba ignorare totalmente il contenuto dell'intestazione; se e' cosi' allora prova
Codice: Seleziona tutto
Sub GSIkWae()
Dim I As Long, mySplitA, mySplitB, cRt As String, ctA As Long, ctB As Long, Delta As Long
Dim FixB As Long, Flagg As Boolean, J As Long, FTim As Boolean
'
FixB = 157
'
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
    FTim = False
    cRt = Trim(Mid(Cells(1, I), InStrRev(Cells(1, I).Value, " ", , vbTextCompare)))
    For J = 2 To Cells(Rows.Count, I).End(xlUp).Row - 1
        mySplitA = Split(Cells(J, I).Value & " - ", " - ", , vbTextCompare)
        mySplitB = Split(Cells(J + 1, I).Value & " - ", " - ", , vbTextCompare)
        'correzione per Rn
        If mySplitA(0) = mySplitB(0) And _
          Trim(Mid(Cells(J, I), InStrRev(Cells(J, I).Value, " ", , vbTextCompare))) = Trim(Mid(Cells(J + 1, I), InStrRev(Cells(J + 1, I).Value, " ", , vbTextCompare))) Then '<<VEDI MODIFICHE
            If Not Flagg Then Cells(Rows.Count, I).End(xlUp).Offset(2 + FTim, 0) = Cells(J, I): FTim = True
            'Calcolo Delta
            ctA = CLng(Left(mySplitA(1), 3))
            ctB = CLng(Left(mySplitB(1), 3))
            If ctB > ctA Then
                Delta = ctB - ctA
            Else
                Delta = ctB - ctA + FixB
            End If
            Cells(Rows.Count, I).End(xlUp).Offset(1, 0) = Delta
            Flagg = True
        Else
            If Trim(Mid(Cells(J, I), InStrRev(Cells(J, I).Value, " ", , vbTextCompare))) = Trim(Mid(Cells(J - 1, I), InStrRev(Cells(J - 1, I).Value, " ", , vbTextCompare))) Then
                Flagg = False
            End If
        End If
    Next J
    Flagg = False
Next I
MsgBox ("Completato...")
End Sub

Le modifiche sono sparse qua e là

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Leggere dati in colonna e fare calcoli

Postdi ikwae » 20/02/20 21:52

Ciao.
La macro che hai fatto funziona come richiesto con calcoli e riferimenti giusti. Ho cercato di far sbagliare la macro con massicce dosi di sabotaggi, per poterla “depistare” a sbagliare ma non ci sono riuscito e per dirne una per tutte ho scritto, in una serie di tre righe, riportante Venezia, in quella in mezzo ho sostituito la z con la t quindi è rimasto scritto Venetia e, fatta girare la macro l’ha giustamente ignora perché non c’è corrispondenza con la riga sopra e neanche con quella sotto. Un lavoro assolutamente preciso e veloce rispettando ogni parte delle richieste.
Ringraziandoti 1000 volte ancora per il lavoro svolto, per la pazienza che mi hai dimostrato e per il tempo che mi hai dedicato. Cordialmente ikwae.
Excel 2007
Avatar utente
ikwae
Utente Senior
 
Post: 309
Iscritto il: 27/12/17 23:14


Torna a Applicazioni Office Windows


Topic correlati a "Leggere dati in colonna e fare calcoli":


Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti