You are here:Home-Domande su Formule e Funzioni-[RISOLTO] Lettera colonna
[RISOLTO] Lettera colonna2018-09-25T14:24:43+02:00

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

Taggato: 

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

        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 topic è stato modificato 1 anno, 9 mesi fa da sidsid.
      • Avatargiorgioantonio
        Partecipante
          Post totali: 436

          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: 749

            ..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: 436

              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: 749

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

              • Avatargiorgioantonio
                Partecipante
                  Post totali: 436

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

                • sidsid
                  Moderatore
                    Post totali: 749

                    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: 436

                      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: 61

                        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, 9 mesi fa da D@niloD@nilo.
                        • Questa risposta è stata modificata 1 anno, 9 mesi fa da D@niloD@nilo.
                        • Questa risposta è stata modificata 1 anno, 9 mesi fa da D@niloD@nilo.
                        • Questa risposta è stata modificata 1 anno, 9 mesi fa da D@niloD@nilo.
                        • Questa risposta è stata modificata 1 anno, 9 mesi fa da D@niloD@nilo.
                      • Avatargiorgioantonio
                        Partecipante
                          Post totali: 436

                          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: 61

                            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, 9 mesi fa da D@niloD@nilo.
                          • sidsid
                            Moderatore
                              Post totali: 749

                              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: 436

                                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: 749

                                  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, 9 mesi fa da sidsid.
                                • Avatargiorgioantonio
                                  Partecipante
                                    Post totali: 436

                                    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: 436

                                      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: 749

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

                                      • sidsid
                                        Moderatore
                                          Post totali: 749

                                          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, 9 mesi fa da sidsid.
                                        • Avatargiorgioantonio
                                          Partecipante
                                            Post totali: 436

                                            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: 749

                                              Grazie del riscontro.
                                              Un saluto ad entrambi
                                              :bye:

                                            • Avatargiorgioantonio
                                              Partecipante
                                                Post totali: 436

                                                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, 9 mesi fa da Avatargiorgioantonio.
                                              • Avatargiorgioantonio
                                                Partecipante
                                                  Post totali: 436

                                                  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: 61

                                                    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: 436

                                                      Salve Danilo,

                                                      ringrazio e alla prossima.

                                                  Visualizzazione 23 filoni di risposte
                                                  • Il topic ‘[RISOLTO] Lettera colonna’ è chiuso a nuove risposte.