Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Excel-Tabelle in Access importieren und normalisieren
zurück: Access Abfrage nach Excel übertragen weiter: Entwurfsansicht drucken? Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Calvinstefan
Excel-Kenner / Access-Einsteiger


Verfasst am:
02. Jul 2009, 14:08
Rufname: Calvinstefan

Excel-Tabelle in Access importieren und normalisieren - Excel-Tabelle in Access importieren und normalisieren

Nach oben
       Version: Office 2007

Smile Hallo!

Habe ein Problem und möchte Euch um Hilfe bitten:

Eine Excel-Tabelle hat 105.000 Zeilen und 27 Spalten. Der Spaltenaufbau ist
folgender:

1. Firma
2. Niederlassung
3. BAB-Zeile
4. Ist-Wert Januar
5. Plan-Wert Januar
6. Ist-Wert Februar
7. Plan-Wert Februar
...

Bislang habe ich diese Tabellen immer mit Hilfe der Pivot-Funktion "normalisiert".
Doch bei dieser Datenmenge reicht selbst das Excel-2007-Sheet nicht mehr:

105.000 Datensätze x 24 Monate (Ist+Plan) = 2.520.000 Datensätze

Da dachte ich an Access. Nur:
wie kann ich den von Excel "vorgegebenen" Aufbau normalisieren?

Ich hätte am Ende gerne für jeden Wert einen eigenen Datensatz nach dem Schema:

1. Firma
2. Niederlassung
3. BAB-Zeile
4. Kennzeiichen Ist / Plan
5. Wert in €

Wie kann ich das hinbekommen??

Vielen Dank schon jetzt für Eure Vorschläge!

Ciao,

Stefan. Question
astern
Datenmodell-Missionar


Verfasst am:
05. Jul 2009, 20:17
Rufname: Andreas
Wohnort: Rastede


AW: Excel-Tabelle in Access importieren und normalisieren - AW: Excel-Tabelle in Access importieren und normalisieren

Nach oben
       Version: Office 2007

Hallo!
Anbei eine Exceldatei mit einem Makro, das Dir die Normalisierung durchführt.
Auf dem Blatt "Plan_Ist_Tabelle" befindet sich ein Button "Aktualisieren". Den musst Du anclicken!
Dann kannst Du die Tabelle "Plan_Ist_Tabelle" in Access importieren.
Wenn Du noch Fragen zu dem VBA-Code hast, dann frag' ...

A*

_________________
1. Access-Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Access-Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!



plan_ist.zip
 Beschreibung:

Download
 Dateiname:  plan_ist.zip
 Dateigröße:  19.77 KB
 Heruntergeladen:  190 mal

Calvinstefan
Excel-Kenner / Access-Einsteiger


Verfasst am:
07. Jul 2009, 09:15
Rufname: Calvinstefan

AW: Excel-Tabelle in Access importieren und normalisieren - AW: Excel-Tabelle in Access importieren und normalisieren

Nach oben
       Version: Office 2007

Smile

Hallo Astern,

danke für Deine Antwort! Dein Code funktioniert soweit prima!!
Mittlerweile muss ich jedoch noch weitere Zeilen umformen und hatte mir deshalb
schnell folgenden Code gestrickt:

Code:

Private Sub btnStart_Click()

Call More_speed

Dim Jahr As Long
Dim Ordnerpfad As String
Dim DatZiel As String
Dim DatName As String
Dim DatHerkunft As String
Dim BlattZiel As String
Dim WertFaNr As String
Dim WertFirma As String
Dim WertNL As String
Dim WertKoTrNr As String
Dim WertKoTr As String
Dim WertKoTrArt As String
Dim WertPC As String
Dim WertBABZeile As String
Dim WertVersion As String
Dim WertPeriode As String
Dim WertBetrag As Single
Dim i As Integer
Dim x As Integer
Dim letztezeile As Long
Dim letztezeile2 As Long

Jahr = "2007"

'Anzeige Bearbeitungsfortschritt ausblenden
With UserForm1
    .Height = 162.75
    .LabelSatz = ""
End With

DatZiel = ThisWorkbook.Name
BlattZiel = "Daten normalisiert"

'Daten löschen
ActiveWorkbook.Sheets(BlattZiel).Activate
letztezeile = ActiveWorkbook.Sheets(BlattZiel).Range("A" & Rows.Count).End(xlUp).Row + 1
Rows("2:" & letztezeile).Delete Shift:=xlUp

Sheets("Daten").Select

letztezeile = Sheets("Daten").Range("A" & Rows.Count).End(xlUp).Row

'Beginn Abarbeitung aller Zeilen
For i = 2 To letztezeile

With UserForm1
    .LabelSatz.Caption = "bearbeite Satz " & i & " von " & letztezeile & "."
    .Repaint
End With

'wenn kein nötiger Datensatz, dann zur nächsten Zeile
If Sheets("Daten").Range("F" & i).Value = "nicht beachten" _
    Or Sheets("Daten").Range("L" & i).Value = "nicht beachten" Then
    GoTo nächstezeile:
End If

'Variablen mit Werten aus Datendatei füllen
    WertFaNr = Sheets("Daten").Range("B" & i).Value
    WertFirma = Sheets("Daten").Range("C" & i).Value
    WertNL = Sheets("Daten").Range("I" & i).Value
    WertKoTrNr = Sheets("Daten").Range("G" & i).Value
    WertKoTr = Sheets("Daten").Range("F" & i).Value
    WertKoTrArt = Sheets("Daten").Range("M" & i).Value
    WertPC = Sheets("Daten").Range("N" & i).Value
    WertBABZeile = Sheets("Daten").Range("L" & i).Value

'Beginn Abarbeitung aller Monate Ist / Plan
For x = 1 To 27

    letztezeile2 = Sheets(BlattZiel).Range("A" & Rows.Count).End(xlUp).Row + 1

    'Variablen in Zieldatei übertragen
    With Sheets(BlattZiel)
        .Range("A" & letztezeile2).NumberFormat = "@"
        .Range("A" & letztezeile2) = Format(WertFaNr, "000")
        .Range("B" & letztezeile2) = WertFirma
        .Range("C" & letztezeile2) = WertNL
        .Range("D" & letztezeile2).NumberFormat = "@"
        .Range("D" & letztezeile2) = Format(WertKoTrNr, "0000000")
        .Range("E" & letztezeile2) = WertKoTr
        .Range("F" & letztezeile2) = WertKoTrArt
        .Range("G" & letztezeile2) = WertPC
    End With

    'BABZeile
    WertBABZeile = Sheets("Daten").Cells(i, 12).Value
    Sheets(BlattZiel).Range("H" & letztezeile2) = WertBABZeile

    'Version
    WertVersion = Left(Sheets("Daten").Cells(1, 15 + x).Value, 1)
   
    Select Case WertVersion
        Case Is = "I"
            WertVersion = "Ist"
            Sheets(BlattZiel).Range("I" & letztezeile2) = WertVersion
        Case Is = "P"
            WertVersion = "Plan"
            Sheets(BlattZiel).Range("I" & letztezeile2) = WertVersion
        Case Else
            WertVersion = Sheets("Daten").Cells(1, 15 + x).Value
            Sheets(BlattZiel).Range("I" & letztezeile2) = WertVersion
    End Select

    'Periode
    Select Case x
        Case Is <= "24"
            WertPeriode = Jahr & "-" & Format((Round(x / 2, 1)), "00")
            Sheets(BlattZiel).Range("J" & letztezeile2) = WertPeriode
        Case Is >= "25"
            WertPeriode = "Summe"
            Sheets(BlattZiel).Range("J" & letztezeile2) = WertPeriode
    End Select

    'Wert
    WertBetrag = Sheets("Daten").Cells(i, 15 + x).Value
    Sheets(BlattZiel).Range("K" & letztezeile2) = WertBetrag * 1000
    Sheets(BlattZiel).Range("K" & letztezeile2).NumberFormat = "#,##0.00"
   
Next x

nächstezeile:
Next i

Unload UserForm1

MsgBox "F E R T I G !!"

Call Meine_Einstellungen

End Sub


Soweit funktioniert das. Allerdings ... da rund 22.000 Zeilen umgeformt werden müssen, dauert das Ausführen des Codes ewig!! ...

Auch das Lösen einiger Excel-Bremsen brachte nicht viel Verbesserung:

Code:

Option Explicit

Dim appcalc
Dim AppScreen
Dim appEvents
Dim AppCursor

Public Sub More_speed()
With Application
    appcalc = .Calculation
    'AppScreen = .ScreenUpdating
    appEvents = .EnableEvents
    AppCursor = .Cursor
    .Calculation = xlCalculationManual 'Automatische Berechnung aus
    .ScreenUpdating = False 'Automatische Bildschirmaktualisierung aus
    .EnableEvents = False 'Eriegnissmakros aus
    .Cursor = xlDefault 'Keine Sanduhr
End With
End Sub

Public Sub Meine_Einstellungen()
With Application
    .Calculation = appcalc
    .ScreenUpdating = AppScreen
    .EnableEvents = appEvents
    .Cursor = AppCursor
End With
End Sub


Hast Du einen Vorschlag, wie ich meinen Code noch schneller bekommen könnte?

Danke!

Ciao,

Stefan.

Question
astern
Datenmodell-Missionar


Verfasst am:
07. Jul 2009, 10:41
Rufname: Andreas
Wohnort: Rastede


AW: Excel-Tabelle in Access importieren und normalisieren - AW: Excel-Tabelle in Access importieren und normalisieren

Nach oben
       Version: Office 2007

Also,
dazu muss ich leider sagen, dass ich nicht der große Code-Optimierer bin. Das einzige, was mir auffällt, ist die Fortschrittsanzeige in UserForm1. Das frisst auf jeden Fall auch Zeit und darauf könnte man verzichten.

A*

_________________
1. Access-Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Access-Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Textdatei in Access importieren+aktualisieren+erweitern 5 maku 803 03. Nov 2007, 14:57
Willi Wipp Textdatei in Access importieren+aktualisieren+erweitern
Keine neuen Beiträge Access Tabellen & Abfragen: Filterdaten aus Excel importieren? 0 pa.baeumel 473 04. Jul 2007, 13:31
pa.baeumel Filterdaten aus Excel importieren?
Keine neuen Beiträge Access Tabellen & Abfragen: Word in Access importieren 6 Daniel Sued 707 27. Jun 2007, 12:34
Daniel.Sued Word in Access importieren
Keine neuen Beiträge Access Tabellen & Abfragen: Fragen zur Verknüpfung mit einer Exceltabelle 1 Marsfrau 671 23. März 2007, 19:03
Shai Fragen zur Verknüpfung mit einer Exceltabelle
Keine neuen Beiträge Access Tabellen & Abfragen: textdateien in access importieren, diesmal anders 17 SpeedRAZR 1798 19. Sep 2006, 09:38
SpeedRazR textdateien in access importieren, diesmal anders
Keine neuen Beiträge Access Tabellen & Abfragen: Excel-Tabelle einfügen 2 OliverNRW 611 09. Aug 2006, 13:21
OliverNRW Excel-Tabelle einfügen
Keine neuen Beiträge Access Tabellen & Abfragen: Große Excel Tabelle in Access importieren und auswerten? 2 dannym 2636 31. Jul 2006, 11:58
huk Große Excel Tabelle in Access importieren und auswerten?
Keine neuen Beiträge Access Tabellen & Abfragen: MySQL-Datenbank/Tabelle in Access importieren?? 1 voodrax 1413 01. Jun 2006, 10:19
Nouba MySQL-Datenbank/Tabelle in Access importieren??
Keine neuen Beiträge Access Tabellen & Abfragen: Problem beim Importieren von Externen Daten 2 XXXmartinXXX 920 10. Mai 2006, 08:55
Gast_der_hilft Problem beim Importieren von Externen Daten
Keine neuen Beiträge Access Tabellen & Abfragen: Mehrere Dateien importieren mit Öffnen-Dialog 2 bem 1215 09. Apr 2006, 12:10
bem Mehrere Dateien importieren mit Öffnen-Dialog
Keine neuen Beiträge Access Tabellen & Abfragen: Importieren einer Excel Tabelle in vorhandene Acc. Tabelle 4 ecmichi 972 03. Apr 2006, 16:52
ecmichi Importieren einer Excel Tabelle in vorhandene Acc. Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Verknüpfung mit Excel-Tabelle: Wie Felddatentyp einstellen?? 1 BlueDolphin 2203 08. März 2006, 20:38
steffen0815 Verknüpfung mit Excel-Tabelle: Wie Felddatentyp einstellen??
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Word Serienbriefe