Puoi estrarre i dati di Excel da un file .csv esterno (e dinamico)?


14

Ho uno script che emette un numero di parametri di rendimento per un computer in un .csv. Excel esegue un controllo statistico di base per la deviazione standard, ecc.

Mi rendo conto che puoi importare file .csv in Excel, ma quello che sto cercando di fare è leggere i dati dinamicamente nel mio modello Excel senza dover reimportarli e ricodificare ogni volta.

C'è un modo per avere una cella / tabella di riferimento di un .csv esterno senza reimportare ogni volta?


Quando il file viene aggiornato, viene aggiunto o sovrascritto?
Benjamin Anderson

Completamente sovrascritto. Ma suppongo di poterlo modificare per funzionare in entrambi i modi.
editor

Risposte:


5

Il modo più semplice per farlo è importare i dati in Access o SQL Express e quindi utilizzare le funzionalità e le funzioni di connessione dati in Excel. Dopo la configurazione iniziale, tutto ciò che dovresti fare è fare clic su Aggiorna tutto, estrarrà i dati e ricalcolerà i valori.

Puoi importare direttamente il CSV con la funzione di connessione dati, ma vorrà inserire i dati e aggiungerli a un foglio di lavoro. Ciò funzionerà, a condizione che lo importi in un foglio di lavoro secondario e lasci formule e calcoli su un altro foglio. Quando fai clic su Aggiorna con questo metodo, chiederà il nome del file e poi lo reimporterà utilizzando le stesse impostazioni utilizzate in origine. Questo metodo è anche in genere più lento o inutilizzabile con set di dati di grandi dimensioni.


2
Usando la funzionalità Connessione dati è possibile disabilitare la richiesta del nome file (c'è una casella di controllo alla fine della procedura guidata). A quel punto puoi anche impostarlo per l'auto-aggiornamento ogni X minuti. Funziona bene per piccoli set di dati.
Martin McNulty

4

finestre

Puoi anche usare Power Query che è un modo un po 'più flessibile per ottenere lo stesso di @ andy-lynch's risposta .

  1. Prendilo Qui
  2. Installalo
  3. Vai alla nuova scheda del nastro "Power Query".
  4. Fare clic su "Da file" o "Da Web" e seguire le istruzioni sullo schermo.

Guarda sotto le gif animate per l'anteprima:

enter image description here

Mac OS

Power Query non è disponibile per MacOS; né la finestra di dialogo "Apri testo" di Excel "Da testo" su MacOS accetta un URL (almeno alla versione 15.33).

Per creare una tale connessione si dovrebbe prima costruire un file di query Web (.iqy), come spiegato in questa guida e quindi importarlo con il comando di menu "Dati - & gt; Ottieni dati esterni - & gt; Esegui query salvata".


2

La domanda è "Come faccio a fare riferimento ai dati in un file .csv?

Il mio modo sarebbe quello di ritagliare il file .csv e utilizzare una macro contenente VBA e ADO che riceve i dati e li inserisce direttamente in un foglio di lavoro in Excel. Qualsiasi database compatibile ODBC può essere la vostra fonte.

Excel 2010 ha Dati & gt; & gt; Ottieni dati esterni - da varie origini dati. Tuttavia, preferisco scrivere il mio codice perché ho il controllo assoluto e posso formattare i risultati nella macro. Aggiorna è con un clic di un pulsante e puoi fare qualsiasi cosa con esso.

Potrei farti sapere alcune specifiche se mi dici da quale database provengono le metriche.

PS Guarda l'elenco dei driver in Dati & gt; & gt; Ottieni dati esterni & gt; & gt; Connessioni esistenti & gt; & gt; Cerca Altro & gt; & gt; Nuova sorgente & gt; & gt; Altro avanzato & gt; & gt; Successivo che ti porta all'elenco delle proprietà di Data Link. Dovrai quindi sapere quale database sorgente e quale driver usare. Puoi scrivermi a cliffbeacham su hotmail con maggiori dettagli.


1

Un modo più semplice (grazie a questo post ) è solo per importare i dati come faresti per un file di testo che hai già scaricato (es Data > Import Text File ), ma invece di inserire un nome file, incollare invece l'URL del file CSV.


Questo è utile Se il file remoto cambia, immagino che non si aggiorni dinamicamente.
editor

Questo è vero - sebbene le solite opzioni per aggiornare su open / every & lt; x & gt; i minuti si applicano ancora.
Andy Lynch


0

Con la macro VBS o lo script sarebbe simile (Excel2010 e versioni successive):

Sub Macro1()
'
' Macro1 Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;\\Path\To\CSV\Folder\CSV_Data.csv" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "Book1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Questa macro è stata effettivamente registrata da Excel 2013 Macro Recorder. Macro Recorder in Toolbar from MS Excel 2013
Potresti creare un pulsante che attiva questa macro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.