› Excel e gli applicativi Microsoft Office › automatizzare elaborazione
-
AutoreArticoli
-
Salve a tutti,
ho l'esigenza di automatizzare un a funzionalità con excel.
Ho un file CSV con questa struttura:
data,id,durata,costo
vorrei acquisire il file csv e far si che excel mi dia il seguente risultato per ogni id:
id: somma della durata in secondi, somma del costo
Qualcuno saprebbe dirmi come fare?
E' necessario fare qualche funzione in VB?
Grazie
allega un file excel col risultato desiderato ed anche il csv
O almeno un estratto di esempio del file csv, e comunque depurato di dati riservati o sensibili.
Salve a tutti,
grazie per avermi risposto.
Cercherò di essere più precisa.
Allego un estratto del file.
La mia esigenza è quella di caricare un file csv sempre differente.
La penultima colonna è l'ID, come potete vedere può essere ripetuto più volte,l'ultima colonna è l'importo.
In output vorrei ottenere la lista degli ID e, per ogni ID differente, la somma degli importi correlati all'id.
Vorrei capire come potrei realizzarlo.
Grazie.
Allegati:
You must be logged in to view attached files.caricare un file csv sempre differente
Spero tu intenda che variano i dati, non la struttura dei campi 🙂
Se conosci un po' di vba devi (anche cercando con google)
1) importare il csv
2) fare il sort sulla colonna ID
3) con un loop sulle righe controllare gli ID duplicati, fare la somma ed eliminare le righe inutili
prova intanto a realizzare i primi 2
P.S. ma sei certa di aver allegato il file giusto ? ci sono troppi "" e non sembra avere la struttura
data,id,durata,costo
ci sono troppi "" e non sembra avere la struttura
Mi era già capitato con un altro utente! Dipende da come è stato esportato il csv. Excel dovrebbe leggere i dati regolarmente, sostituirà ogni coppia di virgolette con una virgoletta sola ("" --> "), e questo serve per permettere di inserire gli spazi nel contenuto dei campi. La struttura non è quella indicata, ma è indifferente al problema, nell'esempio abbiamo data, ora, codice e costo, l'importante è che questa struttura non cambi (come è già stato dichiarato).
Ciao,
grazie per il suggerimento.
Proverò a cimentarmi con il VBA con il quale non ho esperienza.
Nel frattempo ho risolto velocemente creandomi una tabella pivot con etichetta di righe l'ID, sui valori ho messo il costo. Su quest'ultimo ho impostato la somma.
questa una possibile soluzione vba
Sub main() importa ordina somma End Sub Sub importa() With Workbooks.Open("F:\Download\estratto3.csv") ' da modificare percorso .Sheets(1).Copy , ThisWorkbook.Sheets(1) .Close False End With End Sub Sub ordina() With ActiveWorkbook.Worksheets(2) .Sort.SortFields.Clear .Sort.SortFields.Add Key:=Range("C1") .Sort.SetRange .UsedRange .Sort.Header = xlGuess .Sort.MatchCase = False .Sort.Orientation = xlTopToBottom .Sort.SortMethod = xlPinYin .Sort.Apply End With End Sub Sub somma() r = 2 With ActiveWorkbook.Worksheets(2) Do While .Range("C" & r) <> "" If .Range("C" & r) = .Range("C" & r - 1) Then .Range("D" & r - 1) = .Range("D" & r - 1) + .Range("D" & r) .Rows(r).Delete Else r = r + 1 End If Loop End With End Sub
-
AutoreArticoli