Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aus CSV-Fileimport direkt Pivot-Table erstellen

Aus CSV-Fileimport direkt Pivot-Table erstellen
PM
Guten Tag zusammen !
habe da mal wieder eine schwierige Aufgabe gefasst, bei der Ihr mir hoffentlich (einmal mehr) weiterhelfen könnt ?
Und zwar gehts um folgendes Problem:
Ich habe eine CSV-Datei mit einigen Tausend Datensätzen (aufgeteilt in Spalten A bis AN)
Nun möchte ich anhand dieser CSV - Datei per Knopfdruck die Datei in ein anderes Excel laden und daraus automatisch eine Pivot-Tabelle erstellen.
Die Pivot Tabelle soll dann die Anzahl aller Datensätze aufgegliedert nach Bereich (= Spalte AA in der CSV) dargestellt werden.
Geht das irgendwie ?
Hab echt keine Ahnung von Lösungsansatz :-(
Danke schon mal herzlich für Eure Hilfe !!!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Aus CSV-Fileimport direkt Pivot-Table erstellen
23.02.2010 15:04:17
PM
habs nun mal mit dem Makro-recorder ausprobiert.
aber der stürzt nun immer mit einem Laufzeitfehler 1004 ab:
Sub Makro4()
Cells.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Test2!C1:C40").CreatePivotTable TableDestination:="", TableName:= _
"PivotTable5", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable5").PivotFields("PER_Service_Bereich")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable5").AddDataField ActiveSheet.PivotTables( _
"PivotTable5").PivotFields("PER_Service_Bereich"), _
"Anzahl von PER_Service_Bereich", xlCount
Range("C4").Select
End Sub
was ist hier falsch ? kennt jemand von Euch Profis eine Lösung ?
Danke schon mal im voraus !!!!
Anzeige
AW: Aus CSV-Fileimport direkt Pivot-Table erstellen
23.02.2010 15:38:22
PM
Wenn ichs nun über den folgenden Code laufen lasse, so funzt es eigentlich genau so wie ich es möchte:
Sub Makro4()
On Error Resume Next
Cells.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Test2!A1:AN65536").CreatePivotTable TableDestination:="", TableName:= _
"PivotTable5", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable5").PivotFields("PER_Service_Bereich")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable5").AddDataField ActiveSheet.PivotTables( _
"PivotTable5").PivotFields("PER_Service_Bereich"), _
"Anzahl von PER_Service_Bereich", xlCount
Range("A3").Select
Makro5
End Sub
Sub Makro5()
On Error Resume Next
Range("A3").Select
With ActiveSheet.PivotTables("PivotTable5").PivotFields("PER_Service_Bereich")
.Orientation = xlRowField
.Position = 1
End With
End Sub

Nun sollte aber zum Makro - Start noch ein Dialogfenster geöffnet werden, aus welchem die CSV ausgewählt werden soll, anhand dessen dieses Makro dann die Pivot-Table erstellen soll.
(denn die Datei ist nicht jeden Monat am selben Ort abgespeichert)
wie müsste ich meinen "Murks-Code" entsprechend anpassen ?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aus CSV-Fileimport direkt Pivot-Table erstellen


Schritt-für-Schritt-Anleitung

  1. CSV-Datei auswählen: Erstelle ein Makro, das ein Dialogfenster öffnet, damit Du die CSV-Datei auswählen kannst.

    Sub CSVImport()
       Dim csvFile As Variant
       csvFile = Application.GetOpenFilename("CSV Files (*.csv), *.csv", , "Wähle eine CSV-Datei")
       If csvFile = False Then Exit Sub
       ' Hier folgt der Importcode
    End Sub
  2. PivotCache und PivotTable erstellen: Verwende die ausgewählte CSV-Datei, um einen Pivot-Cache und dann die Pivot-Table zu erstellen.

    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=csvFile).CreatePivotTable TableDestination:="", TableName:="PivotTable1"
  3. Daten anordnen: Füge die gewünschten Felder zur Pivot-Tabelle hinzu und wähle die Anordnung.

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("PER_Service_Bereich")
       .Orientation = xlRowField
       .Position = 1
    End With
  4. Datenfeld hinzufügen: Füge das gewünschte Datenfeld hinzu, um die Anzahl der Datensätze anzuzeigen.

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("PER_Service_Bereich"), "Anzahl von PER_Service_Bereich", xlCount
  5. Makro ausführen: Führe das Makro aus und überprüfe, ob die Pivot-Tabelle korrekt erstellt wurde.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn der SourceData-Bereich nicht korrekt angegeben ist. Achte darauf, dass die Spaltenbezüge in der CSV-Datei korrekt sind (z.B. "Test2!A1:AN65536").

  • Falsche Datenanzeige: Wenn die Pivot-Tabelle nicht die erwarteten Daten anzeigt, überprüfe, ob die Filter und Sortierungen korrekt sind.


Alternative Methoden

Falls Du keine Makros verwenden möchtest, kannst Du die CSV-Datei auch manuell in Excel importieren und dann eine Pivot-Tabelle erstellen:

  1. Gehe zu Daten > Aus Text/CSV.
  2. Wähle die CSV-Datei aus und klicke auf Importieren.
  3. Wähle die Daten aus und gehe zu Einfügen > PivotTable.
  4. Ordne die Felder wie gewünscht an.

Praktische Beispiele

Hier ist ein Beispiel für ein einfaches Makro, das eine Pivot-Tabelle aus einer CSV-Datei erstellt:

Sub ErstellePivotAusCSV()
    Dim csvFile As Variant
    csvFile = Application.GetOpenFilename("CSV Files (*.csv), *.csv", , "Wähle eine CSV-Datei")
    If csvFile = False Then Exit Sub

    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=csvFile).CreatePivotTable TableDestination:="", TableName:="PivotTable1"

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("PER_Service_Bereich")
        .Orientation = xlRowField
        .Position = 1
    End With

    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("PER_Service_Bereich"), "Anzahl von PER_Service_Bereich", xlCount
End Sub

Tipps für Profis

  • Verwende Named Ranges: Um Deine Makros flexibler zu gestalten, kannst Du Named Ranges verwenden, anstatt feste Zellbezüge zu verwenden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in Deinen Makros, um Laufzeitfehler elegant zu behandeln. Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich eine Pivot-Tabelle aus einer externen CSV-Datei erstellen?
Du kannst ein Makro verwenden, um die CSV-Datei zu importieren und dann die Pivot-Tabelle direkt zu erstellen, wie im obigen Beispiel beschrieben.

2. Kann ich die Pivot-Tabelle automatisch aktualisieren?
Ja, Du kannst die Pivot-Tabelle automatisch aktualisieren, indem Du den Code ActiveSheet.PivotTables("PivotTable1").RefreshTable hinzufügst.

3. Welche Excel-Version benötige ich für diese Funktionen?
Die beschriebenen Methoden sind in Excel 2016 und späteren Versionen verfügbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige