Range Basato su titolo colonna



  • Range Basato su titolo colonna
    di Francesco (utente non iscritto) data: 29/10/2012 13:41:08

    Ciao Ragazzi.

    è possibile indicare un range ad Excel indicando il titolo di una colonna?

    -cerca i valori nella colonna con titolo "esempio"-

    cosi dapoter cambiare l'ordine della colonne senza compromettere la funzionalità di alcune macro.



  • di HarryBosch data: 29/10/2012 14:14:56

    Ciao Francesco
    si potrebbe cercare questo "titolo" sulla riga dell'intestazione, la prima, e quindi controllarne la colonna di riferimento.

    Attenzione che se nella riga 1 non c'è nessun "Titolo" che corrisponde, il codice va in errore perchè non trova nulla la "colonna.Column"; eventualmente si può aggiustare anche qua, magari con un messaggio che avverte dell'inesistenza della colonna con tale intestazione.
     
    nome = "Titolo"
    Set colonna = Rows(1).Find(nome)
    c = colonna.Column
    
    For Each cella In Range(Cells(2, c), Cells(100, c))
        ...
    Next
    



  • di Vecchio Frac data: 29/10/2012 14:33:33

    In alternativa:
    - evidenzia l'intera colonna interessata
    - Inserisci --> Nome --> Definisci... e dai un titolo all'intera colonna (chiamandola come dici tu "esempio")

    E' tutto. Adesso puoi anche spostare l'intera colonna, il range non muta: Range("esempio") si riferisce sempre a quella colonna, anche se la tagli e incolli da un'altra parte.





  • di Francesco (utente non iscritto) data: 29/10/2012 14:45:01

    il definire il nome funziona anche con il vba? - lo conoscevo ma non sapevo che una volta definito un nome si potesse spostare a piacimento i dati

    non sarebbe male Harry!! dovrei adattare il codice in maniera che cerchi il titolo.
    Uhm bella dritta!
    sto finendo di aggiustare il codice e poi penso proprio che pian piano inserirò la ricerca titoli cosi da renderlo più malleabile (ognuno mette colonne dov vuole )





  • di Vecchio Frac data: 29/10/2012 14:52:34

    Funziona anche da VBA, certo:

    [A:A].name = "prova"

    assegna alla colonna A il nome specificato.
    Dopodichè puoi riferirtivicisi come qualunque altro range:

    [prova] = "hello"





  • di Vecchio Frac data: 29/10/2012 14:53:48

    cit. " ognuno mette colonne dove vuole "
    ---> Questo in linea di principio non dovrebbe essere consentito ma siccome può succedere è il caso di prevederlo per impedirlo, inibirlo o almeno contenere i danni :)





  • di Francesco (utente non iscritto) data: 29/10/2012 15:31:08

    Solo per essere chiarirmi le idee

    se assegno ad A il nome prova
    [A:A].name = "prova"

    e poi sposto la colonna A in B excel la ritrova senza intervento?
    (col ciclo di harry se la va a cercare tramite il titolo)



  • di Vecchio Frac data: 29/10/2012 15:48:30

    Vedila così: non esiste più la colonna A o la colonna B.
    Esiste un range definito "prova" che mantiene la sua identità ovunque lo si sposti nel foglio.
    Quindi la risposta alla domanda è "sì".





  • di Francesco (utente non iscritto) data: 29/10/2012 15:56:29

    Grazie capito!!!!
    a tagliarmela fine dopo un pochino ci arrivo anche io ^_^



  • di Vecchio Frac data: 29/10/2012 15:59:20

    Bè, però prova, prima.
    Se ci sono problema fai sapere :)





  • di Francesco (utente non iscritto) data: 29/10/2012 16:19:40

    si ok!! sto sistemando ultime cosine poi quando sono sicuro che tutto funzioni correttamente provo modificare il codice con le vostre indicazioni.