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
    martedì 27 maggio 2025
    Bari
    15
    61
    19
    34
    80
    Cagliari
    69
    10
    33
    22
    25
    Firenze
    18
    55
    30
    29
    78
    Genova
    64
    18
    35
    56
    57
    Milano
    41
    86
    61
    17
    89
    Napoli
    87
    31
    27
    57
    16
    Palermo
    31
    69
    53
    64
    14
    Roma
    14
    24
    02
    08
    29
    Torino
    83
    04
    79
    49
    27
    Venezia
    19
    57
    53
    10
    33
    Nazionale
    14
    68
    86
    56
    58
    Estrazione Simbolotto
    Milano
    42
    04
    44
    34
    07

Ultimi Messaggi

Indietro
Alto