053. Creazione ed esportazione tabella

Download PDF

Domanda:

Avrei una richiesta che non so se sia fattibile ma intanto vi sottopongo il problema:
io ho due file excel:
1) contiene una tebella –> colonna A dove sono elencate 9 persone, colonna B progetti apartenenti alla persona(quindi nella colonna A ci sono nomi ripetuti), colonna C ore di lavoro
2) nel secondo file ho una tabella dove in ordinata ho l\’elenco dei procetti e in ascissa le persone, centralmente andranno inserite le ore lavoro

la domanda è: è possibili collegare il primo file al secondo in modo tale che in automatico, aggiornando il primo file mese per mese, si crei anche il file excel 2 con la tabella delle ore già compilata per progetto e per persona?

Risposta:

Prima di lanciare la macro che o creato,
salvate i file dello zip in una cartella del vostro pc,
aprite l’ditor A (ALT+F11), andate nella macro
e valorizzate la variabile SecondoFile_Percorso
con il percorso dove avete salvato i file:

SecondoFile_Percorso = “C:\Users\Ric\Desktop\Progetto” >>> da modificare

Per prima cosa ho creato un foglio “Configurazione” dove ho creato un elenco contenente i nomi delle persone ed un altro con i nomi dei progetti.
Attraverso il menù “Name Manager” del Tab “Formula” ho definito i nomi “Persone” e “Progetti” facendoli puntare al foglio “Configurazione”.
Fatto ciò ho ho inserito nelle colonne “A” e “B” i menù a tendina utilizzando la convalida dati del tab “Data”.
Ciò è necessario per evitare di scrivere per errore in modo diverso i nomi della stessa persona e/o dello stesso progetto.
Se ad esempio il progetto “Rendicontazione” fosse inserito una seconda volta come “Redicontazione” nella tabella riepilogo questo apparirebbe su due righe diverse.

Con due cicli For-Next creo ascissa ed ordinata della tabella utilizzando i nomi indicati
nel foglio “Configuazione”:

'Creo Ascissa
For i = 2 To Last_Pers
    TABELLA.Cells(1, Colonna + 1) = CONFIG.Cells(i, 1)
    TABELLA.Columns(Colonna + 1).ColumnWidth = 10 'Imposto larghezza colonne
    Colonna = Colonna + 1
Next i
'Creo Ordinata
For i = 2 To Last_Prog
    TABELLA.Cells(i, 1) = CONFIG.Cells(i, 2)
Next i

Con un altro ciclo For-Next inserisco nella tabella la somma delle ore per Persona/Progetto.
Di fatto inserisco in ciascuna cella una formula Conta.Se con più condizioni:

For c = 2 To Last_Col

    Persona = TABELLA.Cells(1, c)

    For r = 2 To Last_Row

           Progetto = TABELLA.Cells(r, 1)

           TABELLA.Cells(r, c) = Application.WorksheetFunction.SumIfs(DATI.Columns(3), DATI.Columns(1), Persona, DATI.Columns(2), Progetto)

   Next r

Next c

Fatto ciò, apro il secondo file, copio la tabella del primo file e ve la incollo.

A voi il file:
APRI

Riccardo Vincenti

The following two tabs change content below.