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
Riccardo Vincenti
Ultimi post di Riccardo Vincenti (vedi tutti)
- 073. Duplicare righe excel modificando il contenuto - 6 Ottobre 2017
- 072. Estrazione numeri casuali - 6 Ottobre 2017
- 071. Estrazione casuale valori da un elenco - 5 Ottobre 2017
- 070. Contare dati univoci senza Pivot - 21 Settembre 2017
- 069. Aggiungere intervalli ad una data: Date Add in Excel - 21 Settembre 2017