Excel Forum Per condividere esperienze su Microsoft Excel

Macro per creazione colonne

  • Messaggi
  • OFFLINE
    Luca Bertalmio
    Post: 1
    Registrato il: 05/10/2018
    Età: 19
    Utente Junior
    2007
    00 04/10/2019 22:11
    Ciao a tutti,
    io ho un elenco di nomi (quantità variabile) in Foglio1 B3
    in colonna C ho una serie di numeri 1 o 2 (solo quelli)
    Sto cercando di ottenere un codice VBA che mi crei delle colonne nel Foglio2 e metta come intestazione delle colonne create i nomi.
    se in C c'è 1 allora il nome deve andare prima del riepilogo1.
    se in C c'è 2 allora il nome deve andare prima del riepilogo1.

    i nomi devono essere scritti in ordine.
    io riesco a creare una nuova colonna con:

    Sheets("Foglio2").Select
    Columns(4).Insert Shift:=xlToLeft

    ma ho parecchie lacune e non riesco a:
    - rendere la colonna di riferimento variabile (mi piacerebbe ci fosse un riferimento univoco tipo "la colonna con intestazione Riepologo1" anche perché le posizioni sono variabili
    - copiare il nome nell'intestazione della colonna creata

    Qualcuno ha qualche suggerimento da darmi?

    allego un file di esempio, in Foglio2 ho colorato di giallo le colonne da creare

    Grazie
  • OFFLINE
    GiuseppeMN
    Post: 3.496
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 05/10/2019 11:00
    Buona giornata, Luca;
    solo un chiarimento:

    @Luca Bertalmio, scrive:


    ... se in C c'è 1 allora il nome deve andare prima del riepilogo1.
    se in C c'è 2 allora il nome deve andare prima del riepilogo1. ...


    Temo che questo sia un refuso; presumo debba essere:



    ... se in C c'è 1 allora il nome deve andare prima del riepilogo1.
    se in C c'è 2 allora il nome deve andare prima del riepilogo2. ...



    Nel caso incui la mia interpretazione sia corretta, potresti provare a definire due Nomi di zona nel Foglio di lavoro" Foglio2":
    Prelimearmente elimina le attuali Colonne "D, E, F, H e I"; in pratica quelle che contengono i Nomi "Pippo Pluto Orazio Paperino Minnie".
    Fatto ciò:
    - Attribuisci un Nome ad una Cella della Colonna "D"; per maggior chiarezza potresti attribuire alla Cella "D6" il Nome "Riepilogo1"
    - Attribuisci un Nome ad una Cella della Colonna "E"; per maggior chiarezza potresti attribuire alla Cella "E6" il Nome "Riepilogo2"

    Utilizzando il Codice VBA:

    Option Explicit
    
    Sub Aggiungi_Ripilogo1()
        Application.Goto Reference:="Riepilogo1"
        Selection.EntireColumn.Insert
    End Sub
    
    Sub Aggiungi_Ripilogo2()
        Application.Goto Reference:="Riepilogo2"
        Selection.EntireColumn.Insert
    End Sub
    

    Attivando il Codice VBA Aggiungi_Ripilogo1 la Colonna "D" dovrebbe spostarsi in Colonna "E" lasciando lo spazio per aggiungere il primo Nominativo (Pippo) nella Colonna precedente a Riepilogo1; analogamente, attivando il Codice VBA Aggiungi_Ripilogo2, la Colonna "E" dovrebbe spostarsi in Colonna "F" lasciando lo spazio per aggiungere il primo Nominativo (Paperino) nella Colonna precedente a Riepilogo2.

    Ovviamente andrà creato un Ciclo For Next che, in funzione del Valore presente nel Foglio di lavoro" Foglio1" in Colonna "C" gestisce in automatico sia lo spostamento della Colonna interessata (Riepilogo1 o Riepilogo2) sia l'implementazione dell'elenco dei Nomi.

    Spero di aver chiarito in modo esaustivo la mia proposta senza risultare prolisso.



    A disposizione.

    Buon fine settimana.

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Luca Bertalmio
    Post: 1
    Registrato il: 05/10/2018
    Età: 19
    Utente Junior
    2007
    00 05/10/2019 20:52
    Grazie. lo provo e ti faccio sapere