You are here:Home-Domande su Formule e Funzioni-[RISOLTO] Piramidare numeri
[RISOLTO] Piramidare numeri2018-11-29T07:32:32+01:00

Home Forum Domande su Formule e Funzioni [RISOLTO] Piramidare numeri

Taggato: 

Visualizzazione 20 filoni di risposte
  • Autore
    Post
    • Avatargiorgioantonio
      Partecipante
        Post totali: 436

        https://www.dropbox.com/s/cf9k9vq7f77cpcs/Piramide.xlsm?dl=0

        salve,

        cortesemente un aiuto in formula o funzione
        piramidare dei numeri di più celle.
        Nel file oltre i numeri a fianco sotto la voce esito
        il risultato che vorrei.
        NB: il numero è da considerarsi come unità e decina
        cioè se nella cella c’è 7 considerarlo come 07
        Riporto un esempio di 3 numeri per dare l’idea:
        33 5 25 come avviene il conteggio manualmente
        faccio conto di disporre i 3 numeri diciamo cella per cella:
        3 3 0 5 2 5
        sommo il primo col secondo poi il secondo col terzo se
        l’addizione super 9 sommare fra se il numero
        esempio 7 +7 = 14 considerare 1+4 = 5;
        quindi
        3 3 0 5 2 5
        3+3=6; 6+0=6;6+5=2(11=1+1;2); 2+2=4; 4+5=9
        quindi si avrà:
        6 6 2 4 9 si ricomincia il calcolo
        6+6=3(12=1+2;3);3+2=5; 5+4=9; 9+9 =9(18=1+9); si ricomincia il calcolo;
        3 5 9 9
        3+5=8;8+9=8(17);8+9=8(17)
        8 8 8
        8+8=7;7+8=6(15)
        esito finale 76
        lo rifaccio senza parentesi di aiuto:
        3 3 0 5 2 5
        – 6 6 2 4 9
        – – 3 5 9 9
        – – – 8 8 8
        – – – – 7 6
        Grazie

        • Questo topic è stato modificato 1 anno, 7 mesi fa da sidsid.
      • Avatargiorgioantonio
        Partecipante
          Post totali: 436

          Salve,

          leggendo qualcosa in merito al piramidare dei numeri
          or ora ho letto che se il numero di una cella ha solo
          l’unità esempio 7 anteporre lo zero avanti oppure
          considerare 9 al posto di zero cioè invece di 07
          ritenere che il numero sia 97.
          Aggiungo che ritenere il calcolo come fuori 9
          cioè se 17 o fai 1+8=8 oppure 17-9=8.
          Sto riportando degli indizi di aiuto.

        • BySalvBySalv
          Amministratore del forum
            Post totali: 720

            Cioa Giorgioantonio, prova questa

            Sub Piramide()
            Dim r, cc, x, n1
            
            Range("A2:AA100").ClearContents
            r = 1
            1:
            cc = Cells(r, Columns.Count).End(xlToLeft).Column
            If cc = 1 Then Exit Sub
            For x = 1 To cc - 1
                If Len(Cells(r, x)) > 1 Then n1 = Val(Mid(Cells(r, x), 1, 1)) + Val(Mid(Cells(r, x), 2, 1)) Else n1 = Cells(r, x) + Cells(r, x + 1)
                If n1 > 9 Then n1 = n1 - 9
                Cells(r + 1, x) = n1
            Next x
            r = r + 1
            GoTo 1
            End Sub

            fai le prove vedi se va bene

            Ciao By Sal :bye:

            Ciao By Sal (8-)
            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

          • Avatargiorgioantonio
            Partecipante
              Post totali: 436

              Salve By Sal,

              mi cancella tutto,
              ho messo l’apice avanti la riga clearcontents
              ma non mi da nessun esito.

              NB se possibile in formula o function
              in quanto da trascinare
              Salve

              • Questa risposta è stata modificata 1 anno, 7 mesi fa da Avatargiorgioantonio.
            • Avatargiorgioantonio
              Partecipante
                Post totali: 436

                Salve,
                allora ho sbagliato il calcolo sull’esempio
                postato

                3 3 0 5 2 5
                – 6 6 2 4 9
                – – 3 5 9 9
                – – – 8 8 8
                – – – – 7 6
                quello esatto:
                la prima riga i numeri su cui fare il calcolo:
                3 3 0 5 2 5
                – 6 3 5 7 7
                – – 9 8 3 5
                – – – 8 2 8
                – – – – 1 1
                Però nel file i calcoli sono esatti.

              • D@niloD@nilo
                Partecipante
                  Post totali: 61

                  Buonasera

                  lato formule in A2 da trascinare a destra e poi in basso

                   

                  =SE(COLONNE($A$1:A$1)<$K$1-(QUOZIENTE(RIF.COLONNA(A1)-1;$K$1)+RIF.RIGA($A1)-1);RESTO(A1+B1;9);””)

                • Avatargiorgioantonio
                  Partecipante
                    Post totali: 436

                    Salve Danilo, buonasera,

                    cortesemente non ho capito di preciso dove mettere la formula
                    e dove devono stare i numeri da piramidare.
                    Grazie dell’intervento

                  • D@niloD@nilo
                    Partecipante
                      Post totali: 61

                      Ciao io ho usato il tuo file

                      i numeri da A1 a F1

                      la formula da A2 da trascinare a destra e poi in basso poi ho usato K6 dove ho trovato il numero 6 che si può tranquillamente cambiare con una funzione che ci restituisce il numero dei numeri da piramidare

                      allego link per scaricare file

                       

                      https://www.dropbox.com/s/pmy4vgsu33y67jz/Piramide.xlsm?dl=0

                    • Avatargiorgioantonio
                      Partecipante
                        Post totali: 436

                        https://www.dropbox.com/s/fvg1xfpf01zd00x/Piramidare.xlsb?dl=0

                        salve Danilo, devo aver caricato un altro file
                        ecco perchè non mi trovavo con la formula.
                        in questo file devi tenere conto che dove si trovano i 5
                        numeri è l’archivio che ho a scendere giù.
                        a fianco i 5 numeri ho anche messo i risultati e
                        diciamo che è lì in quella colonna vorrei i risultati
                        di ogni cinquina..
                        se non ti disturba ad accomodare.
                        Salve

                      • D@niloD@nilo
                        Partecipante
                          Post totali: 61

                          Buonasera

                          credo che dovresti spiegare meglio il calcolo che vuoi fare in quanto che io sappia per piramidare i numeri del lotto col “fuori novanta” con l’esempio che hai messo in riga 7 vuoi che esca 83  ma col fuori 90 questo è il risultato

                          81  56  7  69   3

                          47  63  76  72

                          20  49  58

                          69  17

                          86

                          • Questa risposta è stata modificata 1 anno, 7 mesi fa da D@niloD@nilo.
                        • Avatargiorgioantonio
                          Partecipante
                            Post totali: 436

                            Salve,
                            il calcolo lo faccio papale papale nel senso manuale
                            1)per ogni cella ci sono 5 numeri
                            2)distribuire i 5 numeri nelle 10 celle separando
                            ogni numero esempio:
                            85 56 7 69 3
                            nb se un numero è inferiore 10 o aggiungere Zero avanti oppure 9
                            quindi 7 =07 oppure 97; 3=03 oppure 93; quindi partenza da cella A fino J
                            A B C D E F G H I J
                            tieni presente che resto 9 e non 90
                            quindi 11-9=2;16-9=7 eccetera 8=8
                            8 1 5 6 0 7 6 9 0 3 BASE DI PARTENZA
                            – 9 6 2 6 7 4 6 9 3 (8+1=9;1+5=6;6+5=11-9=2;6+0=6;0+7=7;7+6=13-9=4;6+9=15-9=6;9+3=12-9=3
                            – – 6 8 8 4 2 1 6 3 (9+6=6;6+2=8;2+6=8;6+7=4;7+4=2;4+6=1;6+9=6;9+3=3
                            – – – 5 7 3 6 3 7 9 (6+8=5;8+8=7;8+4=3;4+2=6;2+1=3;1+6=7;6+3=9
                            – – – – 3 1 9 9 1 7
                            – – – – – 4 1 9 1 8
                            – – – – – – 5 1 1 9
                            – – – – – – – 6 2 1
                            – – – – – – – – 8 3 (6+2=8;2+1=3
                            questo il calcolo manuale, spero sia chiaro.

                          • D@niloD@nilo
                            Partecipante
                              Post totali: 61

                              Ciao

                              si è chiaro comunque nell’esempio sopra c’è un errore hai messo come sequenza iniziale 8156076903

                              mentre è 8556076903…..detto questo in A1 la stringa con i numeri

                              in A2 da trascinare a destra fino a E2

                              ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(” “&$A1;” “;RIPETI(” “;100));COLONNE($A$1:A$1)*100;100))

                              in A3

                              =CONCATENA(SE(LUNGHEZZA(A2)=1;0&A2;A2);SE(LUNGHEZZA(B22)=1;0&B2;B2);SE(LUNGHEZZA(C2)=1;0&C2;C2);SE(LUNGHEZZA(D2)=1;0&D2;D2);SE(LUNGHEZZA(E2)=1;0&E2;E2))

                              in A4 da trascinare a destra fino a J4

                              =STRINGA.ESTRAI($A$3;RIF.COLONNA(A$1);1)*1

                              quindi in A5 da trascinare a destra fino a J4 e poi in basso fino a riga 12

                              =SE(COLONNE($A$1:A1)<11-RIF.RIGA($A1);RESTO(A4+B4;9);””)

                              allego file

                               

                              https://www.dropbox.com/s/luqevpb9xvy8i6g/PIRAMIDE.xlsx?dl=0

                               

                               

                               

                              • Questa risposta è stata modificata 1 anno, 7 mesi fa da D@niloD@nilo.
                            • Avatargiorgioantonio
                              Partecipante
                                Post totali: 436

                                https://www.dropbox.com/s/fvg1xfpf01zd00x/Piramidare.xlsb?dl=0
                                Salve Danilo, buona domenica,

                                pensavo che il tutto si potesse risolvere con una
                                formula o se il caso con una function da mettere in una cella.
                                Quello che mi indichi non, è pratico per me.
                                Nel file che ho allegato ho trovato più indicativo
                                lo sviluppo.
                                Forse non mi sono spiegato come lo avrei voluto.
                                Se per caso in base a come è sviluppato si può ottenere
                                una miglioria di dati.
                                E’ da tenere presente che il calcolo non viene fatto solo
                                su quelle 5 righe.
                                Cmq grazie dell’aiuto. Vedi cos’altro puoi fare.

                              • D@niloD@nilo
                                Partecipante
                                  Post totali: 61

                                  Ciao

                                  con le formule si può fare molto ma i miracoli ancora no….quindi (forse) VBA…ma questo non è il mio campo

                                   

                                  Buona domenica

                                  • Questa risposta è stata modificata 1 anno, 7 mesi fa da D@niloD@nilo.
                                • Avatargiorgioantonio
                                  Partecipante
                                    Post totali: 436

                                    Salve Danilo,

                                    ringrazio per l’aiuto a risolvere il problema.
                                    Salve

                                  • sidsid
                                    Moderatore
                                      Post totali: 749

                                      Prova questa udf

                                      Public Function PIRAMIDE(n1, n2, n3, n4, n5) As Integer
                                      Dim vArr As Variant
                                      Dim j As Long
                                      Dim s As String, sAppoggio As String
                                      Dim nDecina As Integer, nUnita As Integer
                                      vArr = Array(n1, n2, n3, n4, n5)
                                      
                                      For j = LBound(vArr) To UBound(vArr)
                                          nUnita = vArr(j) Mod 10 'unità
                                          nDecina = (vArr(j) - nUnita) / 10 'decina
                                          s = s & nDecina & nUnita
                                      Next j
                                      
                                      Do
                                          For j = 1 To Len(s) - 1
                                              If Val(Mid(s, j, 1)) + Val(Mid(s, j + 1, 1)) > 9 Then
                                                  sAppoggio = sAppoggio & Val(Mid(s, j, 1)) + Val(Mid(s, j + 1, 1)) - 9
                                              Else
                                                  sAppoggio = sAppoggio & Val(Mid(s, j, 1)) + Val(Mid(s, j + 1, 1))
                                              End If
                                          Next j
                                          s = sAppoggio
                                          sAppoggio = vbNullString
                                      Loop Until Len(s) = 2
                                      
                                      PIRAMIDE = Val(s)
                                      End Function

                                      in I7
                                      =PIRAMIDE(C7;D7;E7;F7;G7)

                                      e trascini

                                      Non so quanto è grande il tuo database; nel caso fosse lenta proviamo con una macro

                                    • Avatargiorgioantonio
                                      Partecipante
                                        Post totali: 436

                                        Salve Sid,

                                        va benissimo l’UDF la preferisco in quanto posso
                                        spostarla da un file ad un altro.

                                        Non è affatto lenta, mentre la trascino mi
                                        da i risultati all’istante.

                                        Grazie

                                      • Avatargiorgioantonio
                                        Partecipante
                                          Post totali: 436

                                          Scusami Sid,

                                          ho incollato la UDF in un altro file e mi da
                                          #NOME# nella cella, da cosa dipende?

                                          Salve

                                          La formula =piramide() va inserita obbligatoriamente in
                                          colonna I? Eventualmente cosa occorre cambiare.

                                          • Questa risposta è stata modificata 1 anno, 7 mesi fa da Avatargiorgioantonio.
                                        • sidsid
                                          Moderatore
                                            Post totali: 749

                                            Va messa in un modulo standard

                                          • Avatargiorgioantonio
                                            Partecipante
                                              Post totali: 436

                                              L’ho messa in un modulo standard
                                              ha fatto le bizze ma adesso funziona.

                                              OK grazie ancora

                                            • sidsid
                                              Moderatore
                                                Post totali: 749

                                                La formula =piramide() va inserita obbligatoriamente in
                                                colonna I? Eventualmente cosa occorre cambiare.

                                                Puoi metterla dove vuoi senza cambiare nulla

                                            Visualizzazione 20 filoni di risposte
                                            • Il topic ‘[RISOLTO] Piramidare numeri’ è chiuso a nuove risposte.