You are here:--[RISOLTO] Lettera colonna
[RISOLTO] Lettera colonna2018-09-25T14:24:43+01:00

Home Forum Domande su Formule e Funzioni [RISOLTO] Lettera colonna

Tag: 

  • Autore
    Articoli
  • Avatargiorgioantonio
    Partecipante
      Post totali: 364

      https://www.dropbox.com/s/v1uxnchedkmubcs/LETTERA_COLONNA.xlsb?dl=0

      salve una richiesta di come ottenere la lettera di una colonna
      se nella riga ha il numero 2.
      E il risultato andrebbe nella colonna A;
      Si da il caso che nella riga ci possono essere fino ad un massimo
      di 5 numeri 2.
      Quindi la prima lettera (il primo 2) da porre
      in colonna A, poi se c’è il second 2 nella colonna B,
      poi il terzo 2 (parlo sempre come se i 2 trovati
      fossero nella stessa riga) nella colonna C,
      il quarto nella colonna D e il quinto nella colonna E.
      Come risultato nelle colonne interessate ho segnalato
      la lettera dove è presente il 2.
      Grazie

      • Questo argomento è stato modificato 1 anno, 2 mesi fa da sid sid.
    • Avatargiorgioantonio
      Partecipante
        Post totali: 364

        Salve,

        volevo aggiungere a quanto chiesto.
        Siccome la vedo un pò complicato per una formula
        si potrebbe anche procedere per codice in VBA
        tenendo presente che le colonne in cui assegnare le
        lettere sono A-B-C-D-E mentre la riga da controllare
        se presente il oppure i 2 va da I12:EXD12 e a scendere
        Per quanto riguarda l’ultima riga si può tenere conto
        dei dati immessi nella colonna G che questa conta quanti
        2 ci sono nella riga.Saluti

      • sidsid
        Moderatore
          Post totali: 723

          ..mentre la riga da controllare
          se presente il oppure i 2 va da I12:EXD12 e a scendere..

          Quindi le righe sono variabili.
          Invece volevo capire bene il numero delle colonne; nel file che hai postato, il database arriva fio alla colonna BK, mentre qui dici colonna EXD, che corrisponde alla colonna 4008; è un errore oppure il database è formato da 4000 colonne?

        • Avatargiorgioantonio
          Partecipante
            Post totali: 364

            Salve By Sal,

            siccome ho chiesto che se si può scrive il codice in VBA
            per brevita ho solo inserito poche colonne dell’archivio
            e a tal proposito mi correggo che le colonne non sono 4000
            ma 4005 quindi da I12 : EXI12.
            Salve

          • sidsid
            Moderatore
              Post totali: 723

              nel file di prova il database inizia da riga 13; è sbagliato?

            • Avatargiorgioantonio
              Partecipante
                Post totali: 364

                considera la riga 12 ed il foglio dei dati “F2”.

              • sidsid
                Moderatore
                  Post totali: 723

                  Si da il caso che nella riga ci possono essere fino ad un massimo
                  di 5 numeri 2.

                  Confermi che al massimo ci possono essere 5 valori?

                • Avatargiorgioantonio
                  Partecipante
                    Post totali: 364

                    Si confermo con max 5 valore 2
                    poi considera la riga 12
                    nel copiare ed incollare i dati ho sbagliato riga
                    ed il foglio che contiene i da si chiama “F2.

                  • D@niloD@nilo
                    Partecipante
                      Post totali: 52

                      Buonasera

                      si può fare anche con le formule… in A13 da trascinare a destra e poi in basso

                      =SE.ERRORE(SE(INT((AGGREGA(15;6;RIF.COLONNA($I12:$EXI12)/($I12:$EXI12=2)-RIF.COLONNA($I12)+1;RIF.COLONNA(A$1))+8)/26,09)=0;CODICE.CARATT((AGGREGA(15;6;RIF.COLONNA($I12:$EXI12)/($I12:$EXI12=2)-RIF.COLONNA($I12)+1;RIF.COLONNA(A$1))+8)+64);CODICE.CARATT(INT((AGGREGA(15;6;RIF.COLONNA($I12:$EXI12)/($I12:$EXI12=2)-RIF.COLONNA($I12)+1;RIF.COLONNA(A$1))+8)/26,09)+64)&CODICE.CARATT((AGGREGA(15;6;RIF.COLONNA($I12:$EXI12)/($I12:$EXI12=2)-RIF.COLONNA($I12)+1;RIF.COLONNA(A$1))+8)-(INT((AGGREGA(15;6;RIF.COLONNA($I12:$EXI12)/($I12:$EXI12=2)-RIF.COLONNA($I12)+1;RIF.COLONNA(A$1))+8)/26,09)*26)+64));””)

                      se poi nel file reale i dati sono in un foglio e i risultati in un altro si cambiano i riferimenti

                      allego link per scaricare file di lavoro

                      https://www.dropbox.com/s/4030mrkgf6iggm0/LETTERA_COLONNA%20DAN.xlsb?dl=0

                      EDIT vedo la risposta…ma credo che l’editor del forum taglia qualcosa…

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

                        https://www.dropbox.com/s/t60qhmqe9jotjoj/LETTERA_COLONNA%20DAN_1.xlsb?dl=0

                        Salve Danilo,
                        ti ho postato il file, non sapendo come spiegarti
                        cosa mi succede nel file o meglio nelle colonne dove
                        hai inserito le formule ho fatto un copia e incolla di
                        quanto accade a me.
                        Da cosa può dipendere?
                        Al foglio mio ho dato la stessa formattazione del
                        foglio dove hai scritto le formule.

                        se possibile vorrei vedere se fa lo stesso comportamento
                        con una macro Codice permettendo.

                      • D@niloD@nilo
                        Partecipante
                          Post totali: 52

                          buongiorno
                          ti allego link per scaricare file da te allegato con formule inserite e funziona regolarmente ….io non so cosa fai io ottengo i risultati corretti

                          https://www.dropbox.com/s/8xbc2qc0q3gj3l5/LETTERA_COLONNA%20DAN_1%20con%20formula.xlsb?dl=0

                          EDIT se hai problemi allega il file originale indicando dove vuoi le formule

                          • Questa risposta è stata modificata 1 anno, 2 mesi fa da D@nilo D@nilo.
                        • sidsid
                          Moderatore
                            Post totali: 723

                            Una soluzione anche lato vba (visto che l’avevo iniziata)
                            Sicuramente migliorabile

                            Sub LETTERE()
                            
                            Dim ws As Worksheet
                            Dim nRiga As Long, j As Long, k As Long
                            Dim rTab As Range, rUcella As Range, cella As Range
                            Dim firstAddress As String, x As String
                            Dim vArr() As Variant
                            Dim n As Integer
                            
                            Set ws = Sheets("F2") 'nome tuo foglio
                            nRiga = ws.Range("I" & Rows.Count).End(xlUp).Row
                            Set rTab = ws.Range("I12:EXI" & nRiga)
                            ReDim vArr(1 To rTab.Rows.Count, 1 To 5)
                            
                            Set rUcella = rTab(rTab.Rows.Count, rTab.Columns.Count)
                            With rTab
                                Set cella = .Find(2, rUcella, xlValues, xlWhole, xlByRows, xlNext)
                                If Not cella Is Nothing Then
                                    firstAddress = cella.Address
                                    Do
                                        j = cella.Row - rTab.Row + 1
                                        x = Replace(ws.Cells(1, cella.Column).Address(False, False), "1", "")
                                        n = IIf(j = k, n + 1, 1)
                                        k = j
                                        vArr(cella.Row - rTab.Row + 1, n) = x
                                        Set cella = .FindNext(cella)
                                    Loop While Not cella Is Nothing And cella.Address <> firstAddress
                                End If
                            End With
                            
                            ws.Range("A12:E" & Rows.Count).ClearContents
                            ws.Range("A12:E" & nRiga).Value = vArr
                            
                            Set ws = Nothing
                            Set rTab = Nothing
                            Set rUcella = Nothing
                            
                            End Sub
                          • Avatargiorgioantonio
                            Partecipante
                              Post totali: 364

                              Salve,

                              la macro si ferma alla quinta riga di queste 5

                              j = cella.Row – rTab.Row + 1
                              x = Replace(ws.Cells(1, cella.Column).Address(False, False), “1”, “”)
                              n = IIf(j = k, n + 1, 1)
                              k = j
                              vArr(cella.Row – rTab.Row + 1, n) = x

                              dice: errore 9
                              indice non incluso nell’intervallo

                            • sidsid
                              Moderatore
                                Post totali: 723

                                Sul file che ho io fila tutto liscio.
                                Ho solo spostato il database in riga 12
                                La amcro la esegui con ctrl+a

                                https://app.box.com/s/my2sw4a1v3s9momrahzbknaueh1iiph2

                                • Questa risposta è stata modificata 1 anno, 2 mesi fa da sid sid.
                              • Avatargiorgioantonio
                                Partecipante
                                  Post totali: 364

                                  Salve Sid,

                                  se mi puoi aiutare in questo modo (preciso che non è questione di
                                  non voler postare il file, ha tanta roba che non dovrebbe accettare
                                  di allegarlo) io ti do questi dati poi vediamo quello che si può fare.
                                  vArr(cella.row (col mouse ci metto sopra la freccia)
                                  = cella.Row 69;
                                  mentre rtab.row = 12

                                  come detto avviso indice non incluso nell’intervallo 9
                                  Salve

                                • Avatargiorgioantonio
                                  Partecipante
                                    Post totali: 364

                                    Ho fatto un altro tentativo,
                                    sul file tuo che ho scaaricato come dici funziona liscio.
                                    Con copia e incolla ho provato ad aggiungere a destra del foglio
                                    e ho rilanciato la macro e quindi anche qui la macro si ferma con
                                    indice non incluso nell’intervallo.
                                    Se puoi fare la prova ad aggiungere dati fino a EXI e aggiungere qualche
                                    50 nquantina di reghe. ti è sufficiente dei copia e incolla tanto
                                    è importante che la macro funzioni.
                                    Salve

                                  • sidsid
                                    Moderatore
                                      Post totali: 723

                                      Adesso non posso stare al computer.
                                      Sei sicuro che i valori 2 sono Max 5 nel tuo db?

                                    • sidsid
                                      Moderatore
                                        Post totali: 723

                                        Il codice predisposto per leggere fino alla colonna EXI
                                        Set rTab = ws.Range("I12:EXI" & nRiga)
                                        La matrice che viene popolata è predisposta per avere 5 colonne.
                                        Quindi se in una riga trova più di 5 valori (2), scatta l’ errore. Verifica se i valori (2) sono Max 5 x riga.

                                        Edit
                                        Altrimenti devo modificare il codice, inserendo la verifica di max 5 valori (2)

                                        • Questa risposta è stata modificata 1 anno, 2 mesi fa da sid sid.
                                      • Avatargiorgioantonio
                                        Partecipante
                                          Post totali: 364

                                          e vai che funziona.

                                          Si ho trovato una riga con 6 da 2,
                                          ho sistemato il tutto e funziona alla perfezione.

                                          Non chiudo il post perchè vorrei dare soddisfazione anche al bravo Danilo
                                          che ogni volta che chiedo mi vuole sempre aiutare.

                                          OK Sid grazie

                                        • sidsid
                                          Moderatore
                                            Post totali: 723

                                            Grazie del riscontro.
                                            Un saluto ad entrambi
                                            :bye:

                                          • Avatargiorgioantonio
                                            Partecipante
                                              Post totali: 364

                                              https://www.dropbox.com/s/ycj7puwlxz817c9/Per_Danilo.xlsb?dl=0

                                              Salve Danilo,

                                              ti post il file in cui devi fare delle prove.
                                              Per prima cosa devi distribuire le formule del foglio1
                                              tante quante l’archivio di del foglio C_Lotto,
                                              poi inserisci le tue formule
                                              come prima prova e vedi cosa succede.
                                              Poi le formule mie formule fai un copia e incolla
                                              dalla riga 13 del foglio1 e incolla in valori e poi rimetti le tue
                                              formule e vedi cosa succede.
                                              Se a te non succede niente cioè i risultati (lettere) sono
                                              normali in tutti e 2 i casi vuol dire che il file mio ha qualche
                                              problema.
                                              Se mi fai sapere..

                                              Aggiungo che il codice di Sid non mi da problemi di alcun genere.
                                              Saluti e cmq grazie dell’interessamento alla discussione.

                                              • Questa risposta è stata modificata 1 anno, 2 mesi fa da Avatar giorgioantonio.
                                            • Avatargiorgioantonio
                                              Partecipante
                                                Post totali: 364

                                                Salve Danilo,

                                                hai fatto delle prove?
                                                Quale risultato hai avuto?

                                                Anche perchè devo chiudere la richiesta di aiuto.

                                                Ciao

                                              • D@niloD@nilo
                                                Partecipante
                                                  Post totali: 52

                                                  Buongiorno
                                                  per me puoi chiudere visto che hai trovato la soluzione al tuo problema non ho fatto prove sul file postato (vuoi per mancanza di tempo e pigrizia) la richiesta era di trovare il nome della colonna dove si trovasse uno specifico dato quindi la formula che restituisce il nome della lettera della colonna in cui viene messa (che può sempre tornare utile)

                                                  =SE(INT(RIF.COLONNA()/26,09)=0;CODICE.CARATT(RIF.COLONNA()+64);CODICE.CARATT(INT(RIF.COLONNA()/26,09)+64)&CODICE.CARATT(RIF.COLONNA()-(INT(RIF.COLONNA()/26,09)*26)+64))

                                                  nello specifico caso sostituiamo il RIF.COLONNA() con

                                                  (AGGREGA(15;6;RIF.COLONNA($I13:$EXI13)/($I13:$EXI13=2)-RIF.COLONNA($I13)+1;RIF.COLONNA(A$1))+8)

                                                  in modo da sapere la posizione di questi”2″ lungo la riga…..Funziona correttamente
                                                  Detto questo un saluto

                                                • Avatargiorgioantonio
                                                  Partecipante
                                                    Post totali: 364

                                                    Salve Danilo,

                                                    ringrazio e alla prossima.

                                                  La discussione ‘[RISOLTO] Lettera colonna’ è chiusa a nuove risposte.

                                                  Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                                                  Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                                                  Chiudi