Können Sie Excel-Daten aus einer externen (und dynamischen) CSV-Datei abrufen?


14

Ich habe ein Skript, das eine Reihe von Leistungsmetriken für einen Computer in eine CSV-Datei ausgibt. Das Excel führt eine grundlegende Statistikprüfung auf Standardabweichung usw. durch.

Ich weiß, dass Sie CSV-Dateien in Excel importieren können, aber ich versuche, diese Daten dynamisch in mein Excel-Modell einzulesen, ohne sie jedes Mal neu importieren und modellieren zu müssen.

Gibt es eine Möglichkeit, eine Zelle / Tabelle auf eine externe CSV-Datei zu verweisen, ohne sie jedes Mal neu zu importieren?


Wird die Datei beim Aktualisieren angehängt oder überschrieben?
Benjamin Anderson

Vollständig überschrieben. Aber ich denke, ich könnte es so ändern, dass es so oder so funktioniert.
Herausgeber

Antworten:


5

Am einfachsten ist es, die Daten in Access oder SQL Express zu importieren und dann die Datenverbindungsfeatures und -funktionen in Excel zu verwenden. Nach der Ersteinrichtung müssen Sie nur auf Alle aktualisieren klicken, um die Daten abzurufen und die Werte neu zu berechnen.

Sie können die CSV-Datei mit der Datenverbindungsfunktion direkt importieren, sie soll jedoch die Daten einlesen und sie einem Arbeitsblatt hinzufügen. Dies funktioniert, solange Sie es in ein sekundäres Arbeitsblatt importieren und Ihre Formeln und Berechnungen auf einem anderen Blatt belassen. Wenn Sie mit dieser Methode auf "Aktualisieren" klicken, werden Sie nach dem Dateinamen gefragt und anschließend mit denselben Einstellungen wie ursprünglich importiert. Diese Methode ist bei großen Datenmengen normalerweise auch langsamer oder unbrauchbar.


2
Mit der Datenverbindungsfunktion können Sie die Eingabeaufforderung für Dateinamen deaktivieren (am Ende des Assistenten befindet sich ein Kontrollkästchen). An diesem Punkt können Sie auch festlegen, dass die automatische Aktualisierung alle X Minuten erfolgt. Funktioniert gut für kleine Datensätze.
Martin McNulty

4

Windows

Sie können auch Power Query verwenden , um auf etwas flexiblere Weise dasselbe zu erreichen wie in der Antwort von @ andy-lynch .

  1. Hol es dir hier
  2. Es installieren
  3. Wechseln Sie zur neuen Registerkarte "Power Query".
  4. Klicken Sie entweder auf "Aus Datei" oder "Aus dem Web" und befolgen Sie die Anweisungen auf dem Bildschirm.

Siehe unten animiertes GIF für eine Vorschau:

Bildbeschreibung hier eingeben

Mac OS

Power Query ist für MacOS nicht verfügbar. Der Excel-Dialog "Aus Text" zum Öffnen von Dateien unter MacOS akzeptiert keine URL (mindestens ab Version 15.33).

Um eine solche Verbindung herzustellen, müsste man zunächst eine Web-Abfragedatei (.iqy) erstellen, wie in diesem Handbuch erläutert , und diese dann mit dem Menübefehl "Daten -> Externe Daten abrufen -> Gespeicherte Abfrage ausführen " importieren.


Ich stimme zu - in Excel 2016+ verstehe ich, dass dies jetzt die Standardeinstellung ist (als Get and Transform )
Andy Lynch

2

Die Frage lautet: "Wie verweise ich auf Daten in einer CSV-Datei?

Mein Weg wäre, die CSV-Datei auszuschneiden und ein Makro mit VBA und ADO zu verwenden, das die Daten empfängt und sie direkt in ein Arbeitsblatt in Excel schreibt. Jede ODBC-kompatible Datenbank kann Ihre Quelle sein.

Excel 2010 verfügt über Daten >> Externe Daten abrufen - aus verschiedenen Datenquellen. Ich ziehe es jedoch vor, meinen eigenen Code zu schreiben, da ich die absolute Kontrolle habe und die Ergebnisse im Makro formatieren kann. Aktualisieren ist auf Knopfdruck und Sie können alles damit machen.

Ich könnte Sie über einige Details informieren, wenn Sie mir mitteilen, aus welcher Datenbank die Metriken stammen.

PS: Sehen Sie sich die Liste der Treiber unter Daten >> Externe Daten abrufen >> Bestehende Verbindungen >> Weitere >> Neue Quelle >> Andere Erweitert >> Weiter an, um zur Liste der Datenverknüpfungseigenschaften zu gelangen. Sie müssen dann wissen, welche Quelldatenbank und welcher Treiber verwendet werden soll. Sie können mir unter cliffbeacham unter hotmail eine E-Mail mit weiteren Details senden.


2

Eine einfachere Möglichkeit (dank dieses Beitrags ) besteht darin, die Daten so zu importieren, wie Sie es für eine bereits heruntergeladene Textdatei tun würden (z. B. Data > Import Text File). Statt eines Dateinamens fügen Sie stattdessen die URL der CSV-Datei ein.


Das ist nützlich. Wenn sich die entfernte Datei ändert, kann ich mir vorstellen, dass sie nicht dynamisch aktualisiert wird.
Herausgeber

Das stimmt - obwohl die üblichen Optionen zum Aktualisieren beim Öffnen / alle <x> Minuten weiterhin gelten.
Andy Lynch


0

Mit VBS-Makro oder Skript würde wie folgt aussehen (Excel2010 und höher):

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

Dieses Makro wurde tatsächlich mit dem Excel 2013 Macro Recorder aufgenommen. Sie können eine Schaltfläche erstellen, die dieses Makro auslöst.Makrorecorder in der Symbolleiste von MS Excel 2013

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.