Zeilen in Spalten, aber kompliziert !!

  • #1
G

gilgamesh

Guest
hallo,
ich habe folgendes Problem. Ich habe ein txt-Datei, die drei Parameter bestend aus Datum, Uhrzeit und ein dazugehörigen Wert EB enthält. Die Parameter sind aber alle untereinander aufgelistet. Importiere ich diese in Excel,  um das graphisch darzustellen, so werden alle Parameter in die erste Spalte eingefügt. Ich möchte es aber gerne auf drei Spalten aufteilen. Geht das überhaupt, ohne großen Aufwand? Ich habe bereis mit dem Funktion Transponieren versucht, aber die Datei enthält insgesamt 3732 Zeilen. Es würde damit Stunden dauern.
Hat sonst jemand eine Idee ?

danke
gilgamesh

Die txt-Datei sieht folgendermaßen aus:

day 02/18/05
tim 13:03:54
EB 11.0
day 02/18/05
tim 13:07:19
EB 11.0
day 02/18/05
tim 13:10:44
EB 11.0
day 02/18/05
tim 13:14:10
EB 11.1
day 02/18/05
tim 13:17:35
EB 11.2
.
.
.
usw....

diese soll dann im excel so aussehen:

day           tim          eb
02/18/05      13:03:54     11.0
02/18/05      13:07:19     11.0
02/18/05      13:10:44     11.1
02/18/05      13:17:35     11.2
.
.
.
usw....
 
  • #2
Ola,

öffne die DAtei in Word 2000 oder höher  und schalte die Ansicht der Steuerzeichen ein.
Falls manuelle Zeilenwechsel drin sind, ersetzt Du die durch  Absatzmarken. Anmerkung:_ steht für Leerzeichen
Suche ^l ersetze durch ^p
Dann legst Du los:
Suche ^pday_  ersetze durch ^p
Suche ^ptim_ ersetze durch ^t
Suche ^pEB_ ersetze durch ^t
Erste Zeile löschen, Datei speichern, in Excel öffnen, ein wenig korrigieren fertig.

Falls keine manuellen Zeilenwehsel drin sind, kannst du in Word mit Tabelle Umwandeln Text in Tabelle auch den Text in eine dreispaltige Tabelle umwandeln ...
 
  • #3
hallo,

danke für den Tip.
Es sieht schon brauchbar aus. Aber wenn ich dass in Excel importiere sieht es jetzt so aus. Wie bekomme ich die leeren Felder (z.B. A2:A5 oder B3:B6) weg ?


         A          B              C
1   02/18/05
2                13:03:54
3                              11.0
5
6   02/18/05
7                13:07:19
8                              11.0
9
10  02/18/05
11               13:10:44
12                            11.0
13
14  02/18/05
15               13:14:10
16                             11.1
17
18  02/18/05
19                13:17:35
20                            11.2

danke
gilgamesh
 
  • #4
Hi gilgamesh,

folgenden Makro kannst Du auf deine importierten Werte loslassen.

- Tabelle mit den importierten Werten aktivieren
- Makro laufen lassen
-> auf einem weiteren Tabellenblatt sollten dann die transponierten Werte richtig erscheinen

Makro in der Arbeitsmappe anlegen:

1) geöffnet Arbeitsmappe
2) VB-Ediotr öffnen Alt+F11
Links siehst Du ein Fenster mit der Überschrift Projekt-VBA-Project.
In diesem Fenster ist die neue Arbeitsmappe unter dem Namen VBAProject(Mappe1) zu finden.
3) VBA-Modul anlegen mit
3a) VBAProject(Mappe1) mit der Maus selektieren
3b) rechte Maustaste -> Einfügen -> Modul
in der Mitte geht das Code-Fenster Mappe1-Modul1(Code) auf
4) den gesamten Code per copy und Paste in dieses Fenster hineinkopieren
5) VB-Editor schliessen mit Alt+Q
6) Datei speichern

Gruß Matjes :)

Code:
Sub Fuergilgamesh()
  
  Dim ws As Worksheet, ws2 As Worksheet
  Dim z As Long, x As Long, l_first As Long, s_tmp As String
  Dim d_date As Date
  
  On Error GoTo Aufraeumen

  
  Set ws = ActiveSheet
  
 ->ersten Wert day suchen in Spalte 1
  l_first = 0
  For x = 1 To 100
    If Left(ws.Cells(x, 1).Value, 3) = day Then
      l_first = x: Exit For
    End If
  Next x
  If l_first = 0 Then
    MsgBox (Keinen Anfang auf dem Blatt gefunden.)
    GoTo Aufraeumen
  End If
  
 ->neues Blatt anlegen und Überschriften
  Set ws2 = Worksheets.Add(After:=ws)
  z = 1
  With ws2.Cells(z, 1): .Value = day: .Font.Bold = True: End With
  With ws2.Cells(z, 2): .Value = tim: .Font.Bold = True: End With
  With ws2.Cells(z, 3): .Value = eb: .Font.Bold = True: End With
  z = z + 1
 ->Zahlenformat für eb
  ws2.Columns(3).NumberFormat = 0.0
  
  x = l_first
  Do
    If Left(ws.Cells(x, 1).Value, 3) = day Then
      s_tmp = ws.Cells(x, 1).Value
      s_tmp = Right(s_tmp, Len(s_tmp) - 4)->day  abschneiden
      ws2.Cells(z, 1).Value = s_tmp
    Else
      ws.Activate: ws.Cells(x - 1, 1).Select
      MsgBox (Bis zur Zeile  & (x - 1) &  wurde transponiert.)
      Exit Do
    End If
    If Left(ws.Cells(x + 1, 1).Value, 3) = tim Then
      s_tmp = ws.Cells(x + 1, 1).Value
      s_tmp = Right(s_tmp, Len(s_tmp) - 4)->tim  abschneiden
      ws2.Cells(z, 2).Value = s_tmp
    Else
      ws.Activate: ws.Cells(x, 1).Select
      MsgBox (Bis zur Zeile  & x &  wurde transponiert.)
      Exit Do
    End If
    If Left(ws.Cells(x + 2, 1).Value, 2) = EB Then
      s_tmp = ws.Cells(x + 2, 1).Value
      s_tmp = Right(s_tmp, Len(s_tmp) - 3)->EB  abschneiden
      ws2.Cells(z, 3).Value = s_tmp
    Else
      ws.Activate: ws.Cells(x + 1, 1).Select
      MsgBox (Bis zur Zeile  & (x + 1) &  wurde transponiert.)
      Exit Do
    End If
    z = z + 1
    x = x + 3
  Loop
Aufraeumen:
  Set ws = Nothing: Set ws2 = Nothing
End Sub
 
  • #5
Ola,

Kanone auf Spatzen ;)

Also eigentlich hätte nach dem Ersetzen in Word ein DAtensatz je Zeile übrigbleiben müssen. Es sei denn, ich hatte einen Denkfehler oder du etwas übersehen ...
 
  • #6
:D :D
vielen dank an Euch beiden . Der Makro von Matjes hat wunderbar funktioniert!!
:D :D

gruß
gilgamesh
 
Thema:

Zeilen in Spalten, aber kompliziert !!

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben