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ì 28 aprile 2025
    Bari
    62
    48
    68
    64
    35
    Cagliari
    50
    54
    70
    90
    64
    Firenze
    56
    43
    77
    70
    22
    Genova
    56
    80
    78
    87
    10
    Milano
    80
    77
    60
    22
    79
    Napoli
    40
    16
    28
    64
    18
    Palermo
    05
    41
    90
    06
    68
    Roma
    54
    22
    82
    89
    80
    Torino
    72
    21
    25
    16
    70
    Venezia
    35
    68
    75
    03
    30
    Nazionale
    76
    44
    20
    70
    67
    Estrazione Simbolotto
    Genova
    10
    13
    20
    18
    34

Ultimi Messaggi

Indietro
Alto