online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon ikos vom 17.01.2019, 09:21 Options

Oracle-Tabelle in Excel transponieren !!!!!

Hallo Leute,

ich habe ein großes Problem.

Ich muss eine Artikelverbrauchstabelle (3,5 mio Datensätze mit 5 Spalten) aus Oracle nach Excel transponieren.

Die Oracle-Tabelle sieht wie folgt aus:
ARTIKEL, JAHR, MONAT, TAG, VERBRAUCH

Je Artikel wird in Oracle der Tagesverbrauch 1.1. -31.7. untereinander angezeigt. Das Ganze muss jetzt in Excel 2003 tranponiert dargestellt werden. Ich benötige für jeden Datensatz in Excel 190 Spalten.

Hat jemand schnell eine Lösung?

Gruß
IKOS


Antwort schreiben

Antwort 1 von coros vom 17.01.2019, 10:50 Options

Hallo Ikos,

die Menge an Daten, die Du da schreibst, kannst Du nicht auf einem Tabellenblatt darstellen. Die müssen auf mehrere Tabellenblätter aufgeteilt werden. Ich habe mal vor einiger Zeit für jemanden ein Makro geschrieben, das ebenfalls mehr als 65536 Datenzeilen einließt. Als Trennzeichen wird in dem Makro das Semikolon ( ; ) benutzt. Dieses Makro habe ich mal etwas eingekürzt, so dass es auch bei Dir funktionieren sollte. Kopiere es in ein StandardModul und starte es über eine Befehlsschaltfläche.

[b]Option Explicit

Sub Datei_einlesen()
Dim Text1 As String, firstRow As Integer
Dim txtlines As Long, i As Long, Zähler As Long
Dim WorkbookName As Workbook, ActiveSheetName As String
Rem: Für Office97 muss das Array TextArr als String definiert werden
Dim textArr As Variant, Verein As String
Dim dataFitting, ReadFile As String

Rem: Dialog öffnen auf Basis von *.dat Files
ReadFile = Application.GetOpenFilename("Alle Dateien (*.*),")

Rem: Wenn Abbruchtraste beatätigt wurde
On Error GoTo Weiter
If ReadFile = False Then Exit Sub

Weiter:
Application.ScreenUpdating = False

Rem: Leerblatt einfügen
Sheets.Add Before:=Sheets(1)
Sheets(1).Name = "Auswertung von Zeile 1"

Rem: Schliessen einer geöffneten Datei
Close #1

Rem: 1. Öffnen der Datei
Open ReadFile For Input As #1

Rem: Die Anzahl ist nötig um die Grösse des Arrays zu deklarieren
Rem: Zähler auf 0 setzen
txtlines = 0
Rem: Schleife bis Dateiende.
Do While Not EOF(1)
    Rem: Hilfsvariable zum einlesen verwenden
    Line Input #1, Text1
    Rem: Zähler hochzählen
    txtlines = txtlines + 1
Loop

Rem: Schliessen der Datei weil Dateiende erreicht wurde
Close #1

Rem: Erneutes Öffnen um zum Dateianfang zu kommen
Open ReadFile For Input As #1

Rem: Array neu auf die Anzahl der Linien initialisieren
ReDim textArr(txtlines)

Rem: Einlesen der Dateien in das Array
For i = 0 To txtlines - 1
    Line Input #1, textArr(i)
Next i
Close #1

Rem: Namen vergeben
ActiveSheetName = Worksheets(1).Name

Rem: Daten in aktuelles Sheet schreiben
Zähler = 1
For i = 1 To txtlines
    Application.StatusBar = "Datensatz " & i & " von " & txtlines & " wird eingelesen"
    Rem: Neue Tabelle anlegen wenn Zelle 65536 erreicht wurde
    If Zähler Mod 65536 = 0 Then
    
        Rem: Aufsplitten der bisher eingelesenen Daten
        Rem: Indem die Trennung anhand von der Semikolons vorgenommen wird
        Application.StatusBar = "Datentrennung wird vorgenommen"
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1)
        
        Range("A1").Select
        dataFitting = False
        Worksheets.Add After:=ActiveSheet
        ActiveSheet.Name = "Auswertung von Zeile " & i
        ActiveSheetName = ActiveSheet.Name
        
        Zähler = Sheets("Auswertung von Zeile " & i).Range("A65536").End(xlUp).Offset(1, 0).Row
        
    End If
    Worksheets(ActiveSheetName).Cells(Zähler, 1) = textArr(i)
    Zähler = Zähler + 1
Next i
End Sub


[/b]


Bei dem Makro wird zunächst ein Dialogfenster zur Auswahl der einzulesenden Datei geöffnet. Danach werden die Datensätze bis zur Zeile 65535 eingelesen und bei mehr als einer Spalte wird bei dem Trennzeichen "Semikolon" ( ; ) die Datensätze in Spalten aufgeteilt. Danach wird das nächste Blatt erstellt und die nächsten Datensätze eingelesen und getrennt. Das ganze wird soweit durchgeführt, bis alle Datensätze eingelesen wurden.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von ikos vom 17.01.2019, 12:51 Options

super!

erst einmal vielen dank für schnelle beantwortung meines problems.

ich werde mir das script ansehen und es testen. vielleicht habe ich ja schon alle probleme damit beseitigt.

gruß
IKOS

Antwort 3 von ikos vom 17.01.2019, 13:55 Options

hi,
habe das script ausprobiert. daten werden zwar eingelesen, aber das trennzeichen (;) wird ignoriert. jeder datesatz wird als fester datensatz in ein feld eingelesen.
Dürfen "-zeichen als textbegrenzungszeichen enthalten sein? ich habe beides ausprobiert.

kennst du auch ein makro, das die transformation ausführt? ich muss
hier ein bsp, wie die daten aussehen. selbstverständlich haben alle artikel für jeden tag im monat eine mengenangabe:

ARTNR;TAG;MONAT;JAHR;VERBRAUCH
10-1010;01;01;2006;125
10-1010;02;01;2006;110
10-1010;03;01;2006;145
10-1010;04;01;2006;020
10-1010;05;01;2006;112
10-1010;06;01;2006;120
10-1010;07;01;2006;140
40-1040;01;01;2006;140
40-1040;02;01;2006;140
40-1040;03;01;2006;134
40-1040;04;01;2006;098
40-1040;05;01;2006;076
66-1040;01;01;2006;009
66-1040;02;01;2006;200

Antwort 4 von ikos vom 19.01.2019, 09:50 Options

es hat alles geklappt. ich hatte einen formatierungsfeherl in meiner importdatei gehabt.

super, danke, schnelle und kompetenete hilfe !!!!

Ähnliche Themen

Transponieren kompleser Spalten
ikos  18.01.2007 - 114 Hits -

Tabelleninhalte einer excel-Tabelle kopieren und in eine neue Tabelle einfügen
Sternschnuppe  10.03.2007 - 482 Hits - 2 Antworten

Excel Tabelle NICHT im Browser sonder in Excel öffnen
JokaInThaHouse  12.04.2007 - 150 Hits - 2 Antworten

Outlook Termine in Excel
cox  13.09.2007 - 236 Hits - 2 Antworten

Wie sortiere ich eine excel Tabelle?
dergruss  19.12.2007 - 180 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026