Novità

x Joe :aiuto con un if perfavore

i legend

Premium Member
Buon giorno a tutti,
Ciao Joe ,
ho un piccolo problema con un if

Non riesco a capire quanti and legge, mi spiego meglio

devo cercare un valore su n ruote ( dalle tre in su)
a=valore
for es= ini to fin
for p=1 to 5
E1=Estratto(es,r1,p)
e2=Estratto(es,r2,p)
E3=Estratto(es,r3,p)
E4=ecc........

la condizione è:
if E1=a and E2<>a and E3<>a and E4<>a then
'codice ma non funziona cosi , perchè? ' ho provato a guardare ma è impossibile che gestisca solo un and per volta!
elseif E2=a and e1<>a and e3<>a and e4<>a then
'codice

in pratica mi occorre controllare che tutti gli Estratti siano =valore solo 1 volta..
l
Le ruote non è necessario metterle in un array le stabilisco di volta in volta
oppure con uno scegli ruote non saprei......
le ruote di ricerca e verifica sono cmq:
Ruota-RuotaGemella(Ruota)_RuotaDiametrale(ruota) : 3 ruote in tot
oppure
Ruota1-ruotaGemella(ruota1)-RuotaDiametrale(Ruota1)-RuotaDiametrale(RuotaGemella(ruota1)) :4 ruote in tot



Se puoi aiutarmi ancora una volta ti ringrazio altrimenti un grande grazie ugualmente:-)
Ciao:-)
 
Ciao I legend.

No so se ho afferrato bene il problema ...

con una lettura veloce di quanto hai scritto, ma provo questa risposta.

Enne-Ruote (a caso ... in numero e assortimento) / controllare se "E" è presente una sola volta.

For R = 1 TO .... ' Limite di ruote

(se presente)

If Posizione (IdEstrazione,Ruota,EStratto) > 0 Then PrendiRuota = R : K = K+1

Next

If K = 1 Then ... ' è presente solo in PrendiRuota

Poi ... o prima o dopo ... bisogna cancellare K / PrendiRuota per evitare errori (nelle verifiche successive).
:)
 
Ultima modifica:
Ciao joe,(o qualsiasi anima pia) :-)

Posto il codice che ho scritto , econ la verifica.
In pratica l'idea è cercare un mumero su delle ruote legate e giocare sulle altre due dei numeri a nostra scelta, ma se è solo se quel numero è sortito solo su una delle tre.
Codice:
Option Explicit
Sub Main
    Dim Ini,fin,es,Er
    Dim Valore,E1,E2,E3
    Dim R1,R2,R3,P
    Er = 500 ' si può modificare con un inputbox
    fin = EstrazioneFin
    Ini = EstrazioneFin - Er
    R1 = ScegliRuota
    R2 = RuotaGemella(R1)
    R3 = RuotaDiametrale(R1)
    Valore = CInt(InputBox("Inserisci il numero da analizzare","RicercaNumero",90))
    Scrivi "Ruote di ricerca : " & SiglaRuota(R1) & "-" & SiglaRuota(R2) & "-" & SiglaRuota(R3)
    For es = Ini To fin
        For P = 1 To 5
            E1 = Estratto(es,R1,P)
            E2 = Estratto(es,R2,P)
            E3 = Estratto(es,R3,P)
            ' codice di verifica per controllare se quello che chiedo è corretto
            If E1 = Valore Then
                If E2 <> Valore And E3 <> Valore Then
                    Scrivi DataEstrazione(es) & "-" & SiglaRuota(R2) & "-" & SiglaRuota(R3)
                End If
            ElseIf E2 = Valore Then
                If E1 <> Valore And E3 <> Valore Then
                    Scrivi DataEstrazione(es) & "-" & SiglaRuota(R1) & "-" & SiglaRuota(R3)
                End If
            ElseIf E3 = Valore Then
                If E1 <> Valore And E2 <> Valore Then
                    Scrivi DataEstrazione(es) & "-" & SiglaRuota(R1) & "-" & SiglaRuota(R2)
                End If
            End If
        Next
    Next
End Sub
inserisco immagine output
EsempioOutput.jpg
Spero che così la mia richiesta risulti più chiara. :-)
Ciao :-{)
 
Ciao joe se ho capito bene il tuo script, prende la ruota dove è presente il numero di ricerca, io devo fare il contrario
prendere le due ruote dove non è presente,ed escludere le estrazioni dove il numero è presente 2 o piu volte.
altra immagine altro codice:-)
EsempioOutput2.jpg
Codice:
Option Explicit
Sub Main
    Dim Ini,fin,es,Er
    Dim Valore,E1,E2,E3
    Dim R1,R2,R3,P
    Er = 500 ' si può modificare con un inputbox
    fin = EstrazioneFin
    Ini = EstrazioneFin - Er
    R1 = ScegliRuota
    R2 = RuotaGemella(R1)
    R3 = RuotaDiametrale(R1)
    Valore = CInt(InputBox("Inserisci il numero da analizzare","RicercaNumero",90))
    Scrivi " il valore Ricercato è il numero: " & Valore
    Scrivi "Ruote di ricerca : " & SiglaRuota(R1) & "-" & SiglaRuota(R2) & "-" & SiglaRuota(R3)
    For es = Ini To fin
        For P = 1 To 5
            E1 = Estratto(es,R1,P)
            E2 = Estratto(es,R2,P)
            E3 = Estratto(es,R3,P)
            ' codice di verifica per controllare se quello che chiedo è corretto
            If E1 <> E2 And E1 <> E3 And E2 <> E3 Then
                If E1 = Valore Then
                    Scrivi DataEstrazione(es) & "-" & SiglaRuota(R2) & "-" & SiglaRuota(R3) & "-" & StringaEstratti(es,R2) & "-" & StringaEstratti(es,R3)
                ElseIf E2 = Valore Then
                    Scrivi DataEstrazione(es) & "-" & SiglaRuota(R1) & "-" & SiglaRuota(R3) & "-" & StringaEstratti(es,R1) & "-" & StringaEstratti(es,R3)
                ElseIf E3 = Valore Then
                    Scrivi DataEstrazione(es) & "-" & SiglaRuota(R1) & "-" & SiglaRuota(R2) & "-" & StringaEstratti(es,R1) & "-" & StringaEstratti(es,R2)
                End If
            End If
        Next
    Next
End Sub

Lo so che è un semplice costrutto ma mi sta facendo scervellare. sarà colpa dell'età che avanza? :-(
 
Ciao I legend.

Quello che hai fatto in script è giusto ... ma il primo ciclo (quello con cui consideri le posizioni) la fa da padrone. Mi spiego:

Nell' esempio che hai citato e cioè quello del 24 novembre 2011 ...

Considerando la prima posizione ... il risultato è giusto perchè il 90 è presente solo a Palermo.

considerando la quarta posizione ... il risultato è giusto perche il 90 è presente solo a Genova.

Ma se il risultato è differente da quello che volevi ... perchè è doppio ...

allora è "doppiamente sbagliato" ... ed andrebbe escluso.

24.11.2011
BA 23 27 69 13 31
CA 24 11 40 59 83
FI 42 26 08 79 14
GE 29 15 75 90 40
MI 05 49 28 35 02
NA 06 65 32 02 86
PA 90 37 33 69 58
RO 44 31 30 85 32
TO 68 20 66 39 89
VE 02 62 24 29 88
NZ 74 50 66 48 04

13899d1417183235-x-joe-aiuto-con-un-if-perfavore-esempiooutput.jpg

:)
 
Ultima modifica:
Ciao Joe , hai capito qual'è il problema, il risultato non andrebbe escluso,ma andrebbe considerata la ruota restante, provo a capire quello che mi hai spiegato sui cicli. Grazie mille come sempre:-)
 
Ok ...

Archivio l'abbozzo di soluzione, poi si vedrà.

Tuttavia quanto hai scritto al messaggio #8 è ancora differente ...

ed andrebbe "studiato" e/o inquadrato diversamente.

:)
 
Ciao joe,hai ragione , la nuova ipotesi è differente perchè grazie al tuo aiuto mi sono accorto che escludevo dei casi nella mia ricerca.
Cosi è più completa.Tutto si evolve .inizialmente cercavo il numero solo su una ruota e poi mi limitavo alle altre due ora la ricerca l'effetuo su tutte e tre , :-) ora con la nuova ipotesi non escludo nulla...........
ho provato,con la posizione ma non ne vengo a capo......non capisco come faccio ad impelagarmi su cose che sembrano semplici e poi mi complico la vita.....Spero tu abbia un input da darmi.......grazie mille e buona serata. |/:-)
 
Ciao I legend ...

Tecnicamente ti sei cacciato in un bel ginepraio. Poi ...

Bisognerebbe anche aggiungere tra il toscano e il romanesco che la cabala delle ruote che ci hanno dato l'è un pò grulla.

Codice:
Sub Main
	For R = 1 To 10 
	Scrivi SiglaRuota (R)& " " & SiglaRuota(RuotaGemella(R))& " " & SiglaRuota(RuotaDiametrale(R))
	Next
End Sub

Ma questo ... verrebbe, dopo.

Anche se penso che, ognuno ha i suoi tempi, metodi, stili, grinta, capacità di sviluppo e soluzioni diverse.

Normalmente ... oltre un certo livello di semplicità, le cose si possono ingarbugliare o essere ingarbugliate. Difficili.

Ci vuole un pò tempo, di pazienza ed anche ... di riposo.

Normalmente la mattina dopo, spesso i problemi di questo tipo, hanno trovato soluzione ... come per magia.

Ma ripeto è soggettivo ed anch'io a volte ... mi arrabbatto troppo, nel tentativo di ottenere subito il risultato.

Ora, certo che si, potrei darti la soluzione ed in effetti l'ho già data ... almeno per il primo dei casi.

Ma, secondo mia esperienza, solo ciò che si conquista ... è ciò che poi rimane e forma esperienza indelebile.

A quelli della pappa-pronta rimane poco.

Quindi vorrei, non scrivere direttamente la soluzione ... perchè so che ne sei capace.

E, per ora ... ti consiglierei di sostituire R1 / R2 / R3 in R(1) / R(2) / R(3)

che essendo indicizzati possono essere "indirizzati" in scrittura e lettura in funzione del loro indice

mentre avendo nomi differenti ... no.

:) Buona serata a te ed a tutte/i.
 
Ultima modifica:
Ciao joe ,grazie. faccio come dici, ora mi riposo, domami ci ripenso.non so perchè ma per me i cineprai sono come il miele per le api.
Solo che lo faccio inconsapevolmente.:-)ti ringrazio anche per la fiducia,:-)
Buona notte anche a te e a tutti gli amici che ci leggono
ciao
 
Ciao I legend.

Nel tentativo di trovare "la soluzione" abbiamo introdotto considerazioni nuove, che, richiederebbero altro approccio.

Tuttavia per coerenza con quanto s'era proposto, ti lascio qui di seguito,

la fusione di ciò che resta del tuo script ... e della mia proposta.

Vedi già dai primi "Dim" che ho indicizzato le ruote.

sicchè posso indirizzare, ognuna delle 3, attraverso l'indice "Q" ed in queste, verificare se c'è il "Valore" voluto.

In una qualsiasi (UNA GENERICA) Posizione.

Basta che sia diversa ... o maggiore di Zero.

Se si ... conteggiarlo. K= K+1 e ...

prendere in Memoria "M" di quale ruota sia. Ovvero, in quale "indice" è presente.

Quindi, ci siamo limitati, a quello che s'era supposto essere ... è presente SOLO una volta.

Quindi ... If K = 1 Then scrivi DataEstrazione (Es)

Ove Es ... è l' IDEstrazione della data che serve a noi.

Pertanto è giusta la tua analisi/considerazione ... è logica invertita.

Volevamo 2 ruote ed invece abbiamo "raccolto" quella terza sbagliata.

Non è un problema irrisolvibile.

Immagina tre bicchieri di vino.

Sai che sono tre ... ed i vini possono essere solo o bianco, o rosso

Sai che solo UNO ( K= 1 ) è di un colore mentre gli altri 2 sono del colore opposto.

Va da se che, qualunque, bicchiere tu prenda e sia rosso ... gli altri 2 sono bianchi.

Quindi in sintesi basta invertire la logica del vero/falso per avere il risultato corretto.

Invece del presente ... è ... il non presente.

Me lo vedremo appena avrai letto questo poco ... ti sarà tutto chiaro.

:) Buon a giornata.

Codice:
Option Explicit
Sub Main
	Dim Ini,Fin,Es,Er
	Dim Valore,R(3)
	Dim Q,K,M
	Er = 500 ' si può modificare con un inputbox
	Fin = EstrazioneFin
	Ini = EstrazioneFin - Er
	R(1) = ScegliRuota
	R(2) = RuotaGemella(R(1))
	R(3) = RuotaDiametrale(R(1))
	Valore = CInt(InputBox("Inserisci il numero da analizzare","RicercaNumero",90))
	Scrivi "Ruote di ricerca : " & SiglaRuota(R(1)) & "-" & SiglaRuota(R(2)) & "-" & SiglaRuota(R(3))
	For Es = Ini To Fin
		K = 0
		For Q = 1 To 3
			If Posizione(Es,R(Q),Valore) > 0 Then M = Q : K = K + 1
		Next
		If K = 1 Then
			Scrivi DataEstrazione(Es) & " ",0,0
			Scrivi
		End If
	Next
End Sub
 
Ultima modifica:
Buon giorno a tutti:-)
Ciao joe non ci arrivo.Ho provato questo ciclo per inserimento n Ruote a scelta senza legami
Codice:
ru = ScegliRuote(aRuote)

For K = 1 To UBound(aRuote)
ru = aRuote(K)
inconveniente, l'output ruote viene in colonna e non in riga no riesco a vedere se funziona
anche con il contatore non mi funziona................
sono tornato in dietro a fare tutti i passaggi meno elegante ma magari funzionante-> niente
Codice:
Sub Main
    Dim Ini,fin,es
    Dim iNum,Ris1,Ris2,Ris3,Risultato
    Dim ru,K,p
    Dim aRuote1,aRuote2,aRuote3
    iNum = CInt(InputBox("inserisci un numero","Numero da ricercare",90))
    fin = CInt(InputBox("Inserisci ultimo concorso utile","Ultima Estrazione",EstrazioneFin))
    Ini = fin - 250
    aRuote1 = ScegliRuota
    aRuote2 = ScegliRuota
    aRuote3 = ScegliRuota
    For es = Ini To fin
        For p = 1 To 5
            If Estratto(es,aRuote1,p) = iNum Then Ris1 = 1 : Else Ris1 = 0
            If Estratto(es,aRuote2,p) = iNum Then Ris2 = 1 : Else Ris2 = 0
            If Estratto(es,aRuote3,p) = iNum Then Ris3 = 1 : Else Ris3 = 0
            If Ris1 + Ris2 + Ris3 = 1 Then
                Scrivi DataEstrazione(es)& "->|" & SiglaRuota(aRuote1) & "->|" & SiglaRuota(aRuote2) & "->|" & SiglaRuota(aRuote3)& "->|" & StringaEstratti(es,aRuote1) & "->|" & StringaEstratti(es,aRuote2) & "->|" & StringaEstratti(es,aRuote3)
            End If
        Next
    Next
End Sub
in teoria con questo codice solo se è presente 1 sola volta il num di ricerca dovrebbe funzionare invece con output si vede che non va...
Non ci riesco.................
non ci arrivo proprio a livello di logica è errata.............................
La funzione posizione ritorna la posizione è presente il valore quindi se è>0 consegue che è positivo in output restituisce pero la ruota dove è presente il numero non quelle dove è assente...................mi perdo....................
Ciao e grazie :-(
 
Ciao Joe poche righe, elegante,bello....fai sembrare tutto semplice:-)
Non ci sono estrazioni ripetute,
M è la ruota in cui è presente il numero di ricerca, ma in output come si fa a scrivere le ruote restanti?
Ci penso su poi ti faccio sapere......Grazie mille ancora:-)
 
Ciao Joe ,basta un semplice if ,se m=1 scrivi........
Grazie mille, ora continuo lo script
Voglio vedere cosa succede nelle n estrazioni successive ,
da input stabilisco i colpi,
poi faccio un ciclo interno a quello estrazionale
For x= es+1 to es+colpi
next

Grazie mille per la parte difficile senza di te non ci sarei arrivato.......Non consideravo la variabile M per stabilire la ruota...............
La strada è lunga, ma un po di tempo fa non sapevo neanche cos'era il vbscript........
Buona Giornata:-)

P.S: Sei grande
 
Ciao Joe ,basta un semplice if ,se m=1 scrivi........
Grazie mille, ora continuo lo script
Voglio vedere cosa succede nelle n estrazioni successive ,
da input stabilisco i colpi,
poi faccio un ciclo interno a quello estrazionale
For x= es+1 to es+colpi
next

Grazie mille per la parte difficile senza di te non ci sarei arrivato.......Non consideravo la variabile M per stabilire la ruota...............
La strada è lunga, ma un po di tempo fa non sapevo neanche cos'era il vbscript........


Buona Giornata:-)

P.S: Sei grande


"se m=1 scrivi........"

NO. Devi sviluppare il risultato.

Controllare in TUTTE e 3 le Ruote.

For Q = 1 To 3

If Q <> M Then Scrivi SiglaRuota (R(Q)) & " ",0,0

Next

Ove il <diverso> permette di selezionare 2 ALTRE Ruote.
 
Ultima modifica:
Ciao i legend.

Buon Giorno a tutte/i.

Proseguo ancora di un piccolo passo.

Nel messaggio precedente s'è detto che bisogna controllare, in ogni caso, in tutte e 3 le ruote se ... non c'è il valore ricercato.

Quindi diventa inutile memorizzare PRIMA la ruota in cui s'è trovata la spia ... per poi fare un confronto.

Meglio farlo ... direttamente.

Dirò poi il perchè ... ma è da subito evidente che si risparmia (la memoria per contenere la ruota) ... e lo script è anche più leggibile.

' * Valore presente in Una Ruota. *

If K = 1 Then

For Q = 1 To 3

If Posizione(Es,R(Q),Valore) = 0 Then Scrivi SiglaRuota(R(Q)) & " ",0,0

Next : Scrivi

End If


:)
 
Ultima modifica:
Ci è dunque possibile ...

organizzare un primo script completo, capace di gestire tutti i casi possibili.

Quelli con una, due o tre, presenze, nelle tre ruote.

Codice:
Option Explicit
Sub Main
	Dim Ini,Fin,Es,Er
	Dim Valore,R(3)
	Dim K,Q 
	Er = 500 ' si può modificare con un inputbox
	Fin = EstrazioneFin
	Ini = EstrazioneFin - Er
	R(1) = ScegliRuota
	R(2) = RuotaGemella(R(1))
	R(3) = RuotaDiametrale(R(1))
	Valore = CInt(InputBox("Inserisci il numero da analizzare","RicercaNumero",90))
	Scrivi "Ruote di ricerca : " & SiglaRuota(R(1)) & "-" & SiglaRuota(R(2)) & "-" & SiglaRuota(R(3))
	For Es = Ini To Fin
		K = 0
		For Q = 1 To 3
			If Posizione(Es,R(Q),Valore) > 0 Then K = K + 1
		Next
		' --- E' una Estrazione interessante! Il "Valore"  può essere  presente in Una / Due / Tre ... Ruote. 
		If K > 0 Then ColoreTesto K - 1 : Scrivi DataEstrazione(Es) & " ",0,0
		' * Valore presente in Una Ruota. *
		If K = 1 Then
			For Q = 1 To 3
				If Posizione(Es,R(Q),Valore) = 0 Then Scrivi SiglaRuota(R(Q)) & " ",0,0
			Next : Scrivi 
		End If
		' ** Valore presente in Due Ruote. **
		If K = 2 Then		
			For Q = 1 To 3
				If Posizione(Es,R(Q),Valore) = 0 Then Scrivi SiglaRuota(R(Q)) & " ",0,0
			Next : 	Scrivi
		End If
		 ' *** Valore presente in Tre Ruote. *** 
		If K = 3 Then 
			For Q = 1 To 3
				Scrivi SiglaRuota(R(Q))& " ",0,0
			Next :	Scrivi
		End If
		 ColoreTesto 0
	Next
End Sub

ed è ...

un Buon WeekEnd per tutte/i.

:)
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto