Novità

X gli scripter Si può " tradurre" una macro excel in uno script e viceversa?

fillotto

Advanced Member >PLATINUM<
Certo " tradurre" una macro excel in uno script e viceversa è sicuramente possibile,
solo volevo sapere se per gli bravi scripter è in qualche modo di aiuto o è meglio approcciare ex novo il problema?
 

druid

Super Member >PLATINUM<
Ciao, il linguaggio VBA per excel e vbs per gli script sono figli dello stesso "padre", quindi con gli opportuni "adattamenti/accorgimenti", io direi di si.
Ciao
 

joe

Advanced Member >PLATINUM PLUS<
Secondo me è meglio lo script

specie se ci sono calcoli e operazioni lottologiche,

metodi e cabale da verificare e se si ha necessità di operare su l'archivio.

Che è anche l'inviluppo dei casi più comuni di "necessità".

Perché molte delle funzioni per organizzare, aggiornamenti dell'archivio,

calcoli sulle distanze, la ciclometria, simulare le giocate ... calcolare i loro rendiconti ...

sono previste nei programmi (come Spaziometria) mentre non lo sono affatto in excel.

Se invece si tratta di statistiche avanzate, grafici, studio di funzioni, analisi dei dati ecc.

excel è sicuramente più adatto.

Però per tutta quella che è la mia esperienza (ormai vecchia di decenni)

essa mi ha visto spesso ad osservare, impazzire e frustrarsi, utenti dell'una e dell'altra preferenza

con lo strumento meno idoneo a risolvere il problema.

Ancora più spesso trovarlo incapace di utilizzare sia l'uno che l'altro strumento.

Peraltro e per molti versi ... come ha giustamente detto Druid ... molto simili,

in alcuni casi anche perfettamente interscambiabili.

:)
 

fillotto

Advanced Member >PLATINUM<
questa macro excel presa nel web adattata ad un piccolo file per trovare il maggior numero di ambi nelle ultime 100 estrazioni di bari
ha il pregio (in excel) di essere visivamente intuitiva ma si ferma al
primo risultato che trova . Penso invece che nello script si può fare di meglio
Public Sub Metti3()
Application.ScreenUpdating = False
Dim numeri(2) As Long
Dim a As Long
Dim b As Long
Dim n As Integer
Randomize ' IMPORTANTE
Do
ReDim aB(90) As Boolean
For a = 1 To 2 ' riempie la matrice con numeri casuali
n = Int(Rnd * 90 + 1)
Do While aB(n) = True
n = Int(Rnd * 90 + 1)
Loop
numeri(a) = n
aB(n) = True
Next a

For a = 1 To 2 'riempie le celle
Cells(1, a) = numeri(a)
Next a
Call aargh
If Cells(1, 11) >= Cells(1, 8) Then Exit Do 'SE LA CELLA RIGA 1 COLONNA 11 E' = ALLA CELLA RIGA 1 COLONNA 8 ESCI DALLA MACRO
Loop
Application.ScreenUpdating = True
End Sub
 

Allegati

  • Centorighe.JPG
    Centorighe.JPG
    96 KB · Visite: 28

fillotto

Advanced Member >PLATINUM<
come dicevo in h1 metto il numero di ambi minimo che voglio trovare nell'intervallo di estrazioni ( ultime100 di bari in questo caso) in j1 mi mette l'ambo ( 81 e 82) che è uscito 3 volte ma se si fa gitare altre volte la macro si vedrà che anche 20 e 78 è uscito 3 volte e addirittura anche mettendo 3 in h1 può trovare un ambo uscito 4 volte mettendo invece 5 o 6 in excel in questo caso non saprò , in un tempo ragionevole, se esiste un ambo con quelle uscite in quanto continua a girare invano.
Nello script penso che questo si possa gestire meglio, o sbaglio?
 

joe

Advanced Member >PLATINUM PLUS<
Ciao Filotto.

SE è l'elenco degli ambi usciti un ipotetico numero di volte

nella ruota e nell'intervallo ...

in VBScript potrebbero essere 4 o 5 righe significative di un programma.

Peraltro semplicissimo.

Quello che più conta ... è anche il tempo di elaborazione.

Per esempio attualmente esistono concorsi che lasciano tra una giocata

e l'altra il tempo di pochi minuti. Se il codice ed il programma sono più lunghi

di questi, ad essere eseguiti ... il pronostico (eventuale) arriva a giochi già conclusi.

Per esempio e quale ulteriori complicazioni hai che devi eseguire

la macro per 2 presenze,

per 3 presenze ... per 4 ... e poi si blocca pure!

E se fossero 6 per un ambo mentre nessun altro ambo ne ha 4 e 5 ?

Come lo risolvi ?

Considera invece questo risultato (con un PC vecchiotto!) :

Codice:
04.55 4 pres.
04.64 3 pres.
04.84 3 pres.
04.87 3 pres.
16.17 3 pres.
20.78 3 pres.
26.60 3 pres.
26.90 3 pres.
54.87 3 pres.
0.05 secondi.

:)
 

fillotto

Advanced Member >PLATINUM<
"in VBScript potrebbero essere 4 o 5 righe significative di un programma.
Peraltro semplicissimo. "
Come sospettavo,purtroppo non sono bravo,intuisco il problema
in excel mi arrangio di più ma tutto li :(
Mi interessa sapere come ha impostato lo script non perchè penso che si possa sfruttare in modo speculativo ma sono curioso di capirne e imparare specie conoscendo i suoi script che in poche righe raggiungono il risultato, li riesco a capire magari a modificarli per le mie esigenze, ma di fronte a farne impostarne uno nuovo non riesco.
 

joe

Advanced Member >PLATINUM PLUS<
"in VBScript potrebbero essere 4 o 5 righe significative di un programma.
Peraltro semplicissimo. "
Come sospettavo,purtroppo non sono bravo,intuisco il problema
in excel mi arrangio di più ma tutto li :(
Mi interessa sapere come ha impostato lo script non perchè penso che si possa sfruttare in modo speculativo ma sono curioso di capirne e imparare specie conoscendo i suoi script che in poche righe raggiungono il risultato, li riesco a capire magari a modificarli per le mie esigenze, ma di fronte a farne impostarne uno nuovo non riesco.

Ecco quanto richiesto.

Ho commentato le scelte fatte per le variabili e per i valori loro attribuiti.

Codice:
Option Explicit
Sub Main
  'Demo Presenze Ambo By Joe V.1.0 del 19/03/2020
  Rem Dichiaro le variabili:
  Rem A e B = 2 NUMERI di cui si compone un ambo
  Rem Ini = Inizio : Fin = Fine PERIODO
  Rem R = Ruota
  Rem Pres = Presenze dell'Ambo (A,B) nel periodo e ruota indicati.
  Rem Rif = Valore di Riferimento minimo (per selezionare i pochi ambi superfrequenti)
  Dim Ini,Fin,A,B,R,Rif,Pres
  'Parametri per selezionare una Frequenza (minima) di 3 Presenze / 100 Estrazioni
  Ini = EstrazioneFin - 99 : Fin = EstrazioneFin : Rif = 3 
  For R = 1 To 10 : Scrivi NomeRuota(R),True 'Elenca una ad una le 10 ruote classiche
    For A = 1 To 89 ' Primo numero a comporre l'Ambo
      For B = A + 1 To 90 'Secondo numero dell'Ambo
        Pres = AmboFrequenzaTurbo(R,A,B,Ini,Fin) 'Funzione di Spaziometria calcola - LE PRESENZE -
        If Pres >= Rif Then Scrivi Format2(A) & "." & Format2(B) & " " & Pres & " pres."
      Next 'Prossimo valore 'B'
    Next 'Prossimo valore 'A'
    Scrivi String(13,"-"),True ' Separa graficamente le ruote
  Next 'Prossima Ruota 'R'
End Sub

:)
 

fillotto

Advanced Member >PLATINUM<
Grazie tante Joe,in questi giorni di "arresti domiciliari":(:( pure questo aiuta; mi ci sfizierò e passerò il tempo tenendo la mente accesa , adesso si mangia?
 

joe

Advanced Member >PLATINUM PLUS<
Buona giornata a tutte/i.

Lo script si diceva è piuttosto semplice e si compone

fondamentalmente di 4 parti:

* Le variabili (o i parametri) con i loro valori (Ini,Fin,R,Rif)

* Il generatore di tutti gli Ambi (A,B)

* L'utilizzo della funzione (cioè istruzione di Spaziometria) per calcolare le Presenze.

* Il confronto tra il valore delle presenze con il valore di riferimento. (Per evitare mille ambi!)

* Estensione del controllo a tutte le Ruote (Extra)

Dunque la parte "più importante" il calcolo delle presenze richiede "una linea"

Come pure il confronto con il valore di riferimento (If Pres >= Rif) richiede "una linea".

Con il suo Scrivi i risultati del confronto.

Come vedi ... sono le parti "più importanti" o centrali e per questo l'editor le dispone più a destra.

Poi ci sono i 2 cicli For A e B anch'essi occupano 2 linee di programma.

Con i relativi next ... il programma sarebbe già completo per funzionare.

Quindi in sintesi: Generare gli ambi / calcolare le presenze / escludere valori bassi.

:)
 

fillotto

Advanced Member >PLATINUM<
si, ho visto rispetto all'excel è nettamente più adatto.
Adesso sto tentando di far scrivere a fianco alle presenze
anche la data dell'ultima uscita,tanto per vedere eventuali date sincrone melle varie ruote... così
solo che non riesco☹
Bari
04.30 3 pres. 12/03/2020
04.55 4 pres. 03/12/2019
04.64 3 pres. ecc
04.81 3 pres. ecc
04.84 3 pres.
04.87 3 pres.
16.17 3 pres.
20.78 3 pres.
26.60 3 pres.
54.87 3 pres.
81.82 3 pres.
 

joe

Advanced Member >PLATINUM PLUS<
Forse il confronto tra date è più difficile da leggere e gestire

al riguardo del ritardo corrente (puro e semplice).

Con i parametri attuali questo ritardo spazierebbe in valori compresi tra Zero e 100.

Cioè avrebbe 2/3 cifre da gestire anzichè la dozzina di cui si compone la data.

Se usi la funzione AmboRitardo hai facilmente questo valore.

Dopo di che sottraendolo dalla fine del periodo ... hai l'indice della data precedente,

e da questo numero di estrazione si può ricavare la data.

Oppure molto più semplicemente puoi ricorrere alla funzione preposta

a questo calcolo che è SerieUltima ma che è un pochino più difficile da gestire.

Con le date (secondo me) si aggiunge una inutile complicazione

perché è più facile trovare le sincronie in numeri composti di poche cifre.

Comunque con alcune piccole modifiche allo script lo si rende idoneo

a creare una tabella riepilogativa con aggiunto il valore del ritardo.

Codice:
Option Explicit
Sub Main
  'Presenze e Ritardo Ambi By Joe V.2.0 del 19/03/2020
  Rem Dichiaro le variabili:
  Rem A e B = 2 NUMERI di cui si compone un ambo
  Rem Ini = Inizio : Fin = Fine PERIODO
  Rem R = Ruota
  Rem Pres = Presenze dell'Ambo (A,B) nel periodo e ruota indicati.
  Rem Rif = Valore di Riferimento minimo (per selezionare i pochi ambi superfrequenti)
  Dim Ini,Fin,A,B,R,Rif,Pres
  'Parametri per selezionare una Frequenza (minima) di 3 Presenze / 100 Estrazioni
  Ini = EstrazioneFin - 99 : Fin = EstrazioneFin : Rif = 3
  Scrivi "Ruota Ambo Pres  Rit",True
  For R = 1 To 10 'Elenca i risultati nelle 10 ruote.
    For A = 1 To 89 ' Primo numero a comporre l'Ambo
      For B = A + 1 To 90 'Secondo numero dell'Ambo
        Pres = AmboFrequenzaTurbo(R,A,B,Ini,Fin) 'Funzione di Spaziometria calcola - LE PRESENZE -
        If Pres >= Rif Then
          Scrivi FormatSpace(SiglaRuota(R),5),True,False
          Scrivi Format2(A) & "." & Format2(B),False,False
          Scrivi FormatSpace(Pres,5,True),False,False
          Scrivi FormatSpace(AmboRitardo(R,A,B,Ini,Fin),5,True)
        End If
      Next 'Prossimo valore 'B'
    Next 'Prossimo valore 'A'
    Scrivi String(20,"-"),True ' Separa graficamente le ruote
  Next 'Prossima Ruota 'R'
End Sub

:)
 

fillotto

Advanced Member >PLATINUM<
un modo di utilizzo......i TERMINI facciamo finta che non sappiamo l'ultima estrazione , facciamo girare lo script notiamo nell'output a Ba gli ambi in rosso hanno tutti presenza 3 e tutti ritardi 2 questa correlazione non può continuare a lungo perciò adotterei il criterio di giocare su Ba 4.30.81.82 per ambo o meglio ancora per 2 volte per estratto , lo stesso criterio a CA avtrebbe dato già qualche piccolo frutto 9e 45 e 45 e77 insomma tre numeri
che hanno dato un estratto a colpo (45)
Questo ragionamentosi può fare quando il ritardo è piccolo perchè
quando il ritardo comincia ad essere più consistente la correlazione si guasta con l'uscita di uno diei componenti la terzina , quartina.
Perciò sarebbe utile sapere anche i ritardi precedenti per vedere il grado di correlazione raggiunto.
Ruota Ambo Pres Rit
BA
04.30 3 2
BA 04.55 4 45
BA 04.64 3 62
BA 04.81 3 2
BA 04.84 3 57
BA 04.87 3 23
BA 16.17 3 42
BA 20.78 3 5
BA 26.60 3 24
BA 54.87 3 4
BA 81.82 3 2
 

joe

Advanced Member >PLATINUM PLUS<
Ok ... c'è però un passaggio intermedio,

prima ancora delle varie considerazioni, che possono essere sia,

legittime che specifiche, che preferenze personali.

L' output in tabella o più semplicemente la tabella,

si compone di una riga per il titolo, che la suddivide in 4 colonne.

La versione dello script, che segue, agevola il lavoro da te fatto.

Cioè crea una tabella in stile excel suddividendo i dati in celle

che appartengono a tante RIGHE quanti sono gli ambi presenti.

E poi colloca valori in 4 COLONNE ad indicare Ruota/Ambo/Presenze/Ritardo.

QUESTE COLONNE SONO ORDINABILI (e i dati sono già ordinati per ritardo).

Dunque sono elencati tutti gli ambi dopo essere stati raggruppati

per classe di ritardo.

Ma è possibile averli ordinati ANCHE per ruota (come erano) e per

quantità di presenze e per gli altri valori.

Per fare prove al riguardo, è sufficiente cliccare sul Titolo della Colonna

ovvero sulla descrizione del contenuto di di ogni colonna.

Così facendo la tabella si ordinerà a seconda di quanto contenuto

di ognuna dell sue 4 colonne.

Codice:
Option Explicit
Sub Main
  'Tabella Presenze e Ritardo degli Ambi By Joe V.3.0 del 19/03/2020
  Rem Dichiaro le variabili:
  Rem A e B = 2 NUMERI di cui si compone un Ambo
  Rem Ini = Inizio : Fin = Fine PERIODO DI RICERCA PRESENZE
  Rem R = Ruota
  Rem Pres = Presenze dell'Ambo (A,B) nel periodo e ruota indicati.
  Rem Rif = Valore di Riferimento minimo (per selezionare i pochi ambi superfrequenti)
  Dim Ini,Fin,A,B,R,Rif,Pres
  Dim Titoli(4),Valori(4) 'Titoli e Valori per una TABELLA CON 4 COLONNE
  'Parametri per selezionare una Frequenza (minima) di "3 Presenze in 100 Estrazioni"
  Ini = EstrazioneFin - 99 : Fin = EstrazioneFin : Rif = 3
  'Scrivi "Ruota Ambo Pres  Rit",True
  Titoli(1) = "Ruota" : Titoli(2) = "Ambo" : Titoli(3) = "Pr." : Titoli(4) = "Rit"
  InitTabella Titoli 'predispone una tabella con titoli delle colonne.
  For R = 1 To 10 'Elenca i risultati nelle 10 ruote.
  AvanzamentoElab 1,10,R 'Barra Stato Avanzamento Elaborazione
    For A = 1 To 89 ' Primo numero a comporre l'Ambo
      For B = A + 1 To 90 'Secondo numero dell'Ambo
        Pres = AmboFrequenzaTurbo(R,A,B,Ini,Fin) 'Funzione di Spaziometria calcola - LE PRESENZE -
        If Pres >= Rif Then
          Valori(1) = SiglaRuota(R)
          Valori(2) = Format2(A) & "." & Format2(B)
          Valori(3) = Pres
          Valori(4) = AmboRitardoTurbo(R,A,B,Ini,Fin)
          AddRigaTabella Valori 'Aggiunge una riga alla Tabella
        End If
      Next 'Prossimo valore 'B'
    Next 'Prossimo valore 'A'
    'Scrivi String(20,"-"),True ' Separa graficamente le ruote
  Next 'Prossima Ruota 'R'
  CreaTabellaOrdinabile 4,1 'TABELLA ORDINATA CON RITARDO CRESCENTE
  Scrivi "Aggiornato al " & DataEstrazione(Fin),True
End Sub

:)
 
Ultima modifica:

fillotto

Advanced Member >PLATINUM<
Ho aggiunto un inputbox per retrodatare l'analizzo delle estrazioni
in quanto vedere come si è comportato in passato con la speranza che questo possa dare qualche indicazione . Quindi ritardate di tot estrazioni e divertitevi a fare dei pronostici controllando se avete azzeccato i pronostici così da utilizzarli nelle situazioni future.
Per quanto mi risulta sembra che a parità di uscite e di ritardo riproporre gli stessi ambi x tutte dia dei risultati.
Codice:
Option Explicit
Sub Main
  'Tabella Presenze e Ritardo degli Ambi By Joe V.3.0 del 19/03/2020
  Rem Dichiaro le variabili:
  Rem A e B = 2 NUMERI di cui si compone un Ambo
  Rem Ini = Inizio : Fin = Fine PERIODO DI RICERCA PRESENZE
  Rem R = Ruota
  Rem Pres = Presenze dell'Ambo (A,B) nel periodo e ruota indicati.
  Rem Rif = Valore di Riferimento minimo (per selezionare i pochi ambi superfrequenti)
  Dim Ini,Fin,A,B,R,Rif,Pres,Meno
  Dim Titoli(4),Valori(4) 'Titoli e Valori per una TABELLA CON 4 COLONNE
   Meno = InputBox("Per delle prove di quante  estrazioni vuoi retrodatare la fine? ",,0)
  'Parametri per selezionare una Frequenza (minima) di "3 Presenze in 100 Estrazioni"
  Ini = EstrazioneFin - 99 : Fin = EstrazioneFin-Meno : Rif = 3
  Scrivi "Estrazione analizzate fino al " & DataEstrazione(Fin)& " compreso"
  'Scrivi "Ruota Ambo Pres  Rit",True
  Titoli(1) = "Ruota" : Titoli(2) = "Ambo" : Titoli(3) = "Pr." : Titoli(4) = "Rit"
  InitTabella Titoli 'predispone una tabella con titoli delle colonne.
  For R = 1 To 10 'Elenca i risultati nelle 10 ruote.
  AvanzamentoElab 1,10,R 'Barra Stato Avanzamento Elaborazione
    For A = 1 To 89 ' Primo numero a comporre l'Ambo
      For B = A + 1 To 90 'Secondo numero dell'Ambo
        Pres = AmboFrequenzaTurbo(R,A,B,Ini,Fin) 'Funzione di Spaziometria calcola - LE PRESENZE -
        If Pres >= Rif Then
          Valori(1) = SiglaRuota(R)
          Valori(2) = Format2(A) & "." & Format2(B)
          Valori(3) = Pres
          Valori(4) = AmboRitardoTurbo(R,A,B,Ini,Fin)
          AddRigaTabella Valori 'Aggiunge una riga alla Tabella
        End If
      Next 'Prossimo valore 'B'
    Next 'Prossimo valore 'A'
    'Scrivi String(20,"-"),True ' Separa graficamente le ruote
  Next 'Prossima Ruota 'R'
  CreaTabellaOrdinabile 4,1 'TABELLA ORDINATA CON RITARDO CRESCENTE
  Scrivi "Aggiornato al " & DataEstrazione(Fin),True
End Sub
 

joe

Advanced Member >PLATINUM PLUS<
Ciao, si,

è chiaro sin dall'inizio che questo script ... (e non si era parlato di ritardo)

è destinato a produrre una tabella e non è particolarmente adatto a testare un metodo.

Tuttavia se rimangono fissi (e sono comunque modificabili) i 3 parametri fondamentali,

cioè: periodo / presenze / ritardo si può facilmente trasformare le "righe utili"della tabella,

in altrettante giocate.

Cioè trasformare tutto in metodo.

Anche se è più semplice è più giusto riscrivere tutto diversamente.

Avendo questo script, (questo già fatto), è anche possibile controllare

che il metodo cioè il "futuro metodo" funzioni "appaiato" alla tabella.

Cioè che il metodo trovi esattamente gli stessi numeri già nella tabella statistica

e ... alle ulteriori condizioni imposte, li verifichi come pronostici.

:)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    giovedì 18 aprile 2024
    Bari
    13
    39
    14
    70
    78
    Cagliari
    67
    65
    03
    87
    63
    Firenze
    85
    90
    19
    67
    78
    Genova
    60
    81
    39
    33
    13
    Milano
    90
    01
    83
    11
    88
    Napoli
    18
    12
    80
    29
    19
    Palermo
    50
    83
    40
    24
    12
    Roma
    74
    48
    75
    65
    37
    Torino
    80
    46
    44
    27
    30
    Venezia
    70
    16
    72
    03
    89
    Nazionale
    89
    22
    06
    87
    13
    Estrazione Simbolotto
    Genova
    28
    21
    43
    25
    17

Ultimi Messaggi

Alto