Novità

Aiuto Funzione Foglio di Calcolo

i legend

Premium Member
Ciao a tutti ,...................Vorrei scrivere una funzione da inserire in una sub per lo sviluppo degli Elementi scritti in un InputBox. In un inputBox scrivo i numeri in "00" da (1) a (20 elementi) separati da un ".".............................. in un altro inputBox scelgo la Classe............................... ora in base alla classe sviluppo gli elementi......................................(So che tutto questo è presente in spaziometria, ma molte ricerche per ora per me è più semplice svilupparle in foglio di calcolo..non me ne voglia nessuno)... [Code ] 5 10 15 20 1 5 10 15 20 2 10 45 105 190 3 10 120 455 1140 4 5 210 1365 4845 5 1 252 3003 15504 [/code]
Codice:
 sub SviluppoClasse  ' dichiaro le variabili  Dim sNumeri as string, sD as string Dim  Cl as integer Dim oCellSviluppo as object  ' acquisisco gli elementi che mi occorre analizzare sNumeri=InputBox("Inserisci i Numeri di Ricerca in doppia cifra e separati dal  "." ","Analesi Numerica")  Cl=Cint(InputBox("Inserisci la classe di sviluppo,  1= estratto , 2= ambo,3=terno,ecc..","SviluppoClasse")   ' il sistema sviluppato scorre nella cella oCellSviluppo.string=Carica(sNumeri , sD , Cl )   end sub   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''    function Carica(sNumeri as string, Cl as integer) as string  ' dichiaro le variabili che devo utilizzare.. Dim L_sNum as integer            'lunghezza della stringa Dim vetNum as string                 ' string senza separatori Dim x as integer,E as string,A as string,T as string,Q as string,C as string    vetNum=split(sNumeri,".",2) L_sNum=Len(vetNum)  redim aNum(0)  for x =1 to L_sNum step 2  aNum= aNum(x) Select case Classe case 1 cl=1 carica=format(x,"00") case 2 cl= 2  for E= 1 to ubond(aNum(x))-2 	for A= E+1 to Ubound(aNum(x))-1 	carica= format(E,"00")&"."&format(A,"00") next a next e case 3 Cl=3 for E= 1 to ubond(aNum(x))-3 	for A= E+1 to Ubound(aNum(x))-2 		for t=a+1 to ubound(aNum(x))-1 	carica= format(E,"00")&"."&format(A,"00")&"."& format(T,"00") next t next a next e case 4 cl=4 for E= 1 to ubond(aNum(x))-4 	for A= E+1 to Ubound(aNum(x))-3 		for t=a+1 to ubound(aNum(x))-2 			for q=t+1 to ubound(aNum(x))-1 	carica= format(E,"00")&"."&format(A,"00")&"."& format(T,"00")&"."&Format(Q,"00") next q next t next a next e  case=5 Cl=5 for E= 1 to ubond(aNum(x))-5 	for A= E+1 to Ubound(aNum(x))-4 		for t=a+1 to ubound(aNum(x))-3 			for q=t+1 to ubound(aNum(x))-2 				for C=q+1 to ubound(aNum(x))-1 	carica= format(E,"00")&"."&format(A,"00")&"."& format(T,"00")&"."&Format(Q,"00") &"."&format(C,"00") next C next q next t next a next e end select  end function
Spero che qualcuno possa aiutarmi, ...................................... il codice è errato, spero la logica seguita non lo sia............................................... Cordiali saluti.....................I Legend
 
Buon giorno a tutti. Mi scuso per l'orribilante modo di postare ma ho ancora problemi con la connessione a questo sito.E' scoraggiante anche per me.................... Di quanto scritto sopra mi rendo conto della sua illegibilità, pertanto ripropongo la mia richiesta più chiaramente...................................Una volta inserita una sequenza numerica "01"."21"."78".eccc con un max di 20 Elementi, vorrei caricarli in un Array...........................................questo non so farlo, a meno che non dia il valore di ciascun elemento ad una cella, ma è bruttissimo.--------------------- E' come anzichè fare 8*6 facessi 8+8+8+8+8+8...........................Vorrei capire come Fare. per il resto provo ad arrangiarmi con select case oppure una serie di if....................... Grazie in ogni caso...................................Cordiali saluti .............................I Legend
 
Ciao se li devi inserire in una Matrice (Array), ti puoi semplificare la vita con questa macro:
Codice:
Option Explicit
Sub InserisciNumeri()
Dim num()
Dim nq As Byte
Dim nr As Byte
Dim n As Byte
    nq = InputBox("immettere quantità numeri")
    ReDim num(nq)
        For nr = 1 To nq
            n = InputBox("Inserisci il " & nr & "° " & "valore!")
            num(nr) = n
        Next nr
        '-- Il codice sottostante scrive i valori della matrice --
            For n = 1 To nq
                Cells(1, 1 + n) = num(n)
            Next n
End Sub
pfca
 
Grazie mille Francesco sei stato gentilissimo..................................... Ho provato il codice e va benissimo, dato che mi serviva lo sviluppo in terzine ho aggiunto altre due variabili contatore,x ed y ...........................................
Codice:
 For n = 1 To nq-2      For x = n+1 To nq-1          For y = x+1 To nq                 Cells(1, 2) = format(num(n),"00")&"."&format(num(x),"00")&"."&format(num(y),"00") next y next x             Next n
Far scorrere lo sviluppo in una singola Cella......................................Se volessimo semplificare ulteriormente, anziche fare un ciclo input per ogni numero, si potrebbe inserire tutti in uno ed estrabolarli uno per volta?? Solo per imparare qualcosa in più.Così va già benissimo..............Grazie mille------------Cordiali saluti-----------I Legend
 
Ciao, penso che il tempo impiegato con l'inserimento dei numeri da ciclo input, sia minore
di inserire tutti i numeri formattati in due cifre, separati da . o , o spazio,
comporti un tempo più lungo oltre a un'altra elaborazione che con l'input ti eviti.
Se poi vuoi vedere l'intera elaborazione in terzine, puoi provare questa variazione:
Codice:
Sub InserisciNumeri2()
Dim num()
Dim nq As Byte
Dim nr As Byte
Dim n As Byte
Dim x As Byte
Dim y As Byte
Dim caso As Byte
    nq = InputBox("immettere quantità numeri")
    ReDim num(nq)
        For nr = 1 To nq
            n = InputBox("Inserisci il " & nr & "° " & "valore!")
            num(nr) = n
        Next nr
        '-- Il codice sottostante scrive i valori della matrice --
        For n = 1 To nq - 2
            For x = n + 1 To nq - 1
                For y = x + 1 To nq
                caso = caso + 1
                    Cells(1 + caso, 2) = Format(num(n), "00") & "." & Format(num(x), "00") & "." & Format(num(y), "00")
                Next y
            Next x
        Next n
End Sub
pfca
 
Ultima modifica:
Grazie Mille Francesco accetto il tuo suggerimento :-).............................................. La velocità è molto importante, ....Ti ringrazio anche per aver compreso quanto avevo scritto sopra. ..............................................Cordiali saluti.................I Legend
 

Ultima estrazione Lotto

  • Estrazione del lotto
    venerdì 30 maggio 2025
    Bari
    72
    07
    04
    37
    54
    Cagliari
    15
    27
    54
    33
    16
    Firenze
    35
    54
    20
    80
    02
    Genova
    25
    76
    44
    21
    87
    Milano
    59
    44
    88
    77
    63
    Napoli
    35
    90
    85
    60
    12
    Palermo
    49
    61
    08
    32
    11
    Roma
    37
    40
    03
    06
    58
    Torino
    21
    46
    55
    24
    25
    Venezia
    58
    28
    42
    19
    35
    Nazionale
    74
    42
    32
    87
    60
    Estrazione Simbolotto
    Milano
    16
    22
    33
    36
    32
Indietro
Alto