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
    lunedì 04 maggio 2026
    Bari
    22
    24
    23
    33
    09
    Cagliari
    40
    15
    22
    90
    51
    Firenze
    70
    02
    71
    41
    40
    Genova
    51
    80
    25
    69
    30
    Milano
    23
    28
    89
    02
    64
    Napoli
    16
    54
    41
    08
    56
    Palermo
    18
    25
    11
    66
    36
    Roma
    28
    07
    03
    47
    76
    Torino
    72
    24
    01
    07
    70
    Venezia
    10
    80
    17
    69
    13
    Nazionale
    06
    39
    41
    42
    38
    Estrazione Simbolotto
    Milano
    18
    31
    25
    04
    14
Indietro
Alto