Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Feste Zeichenlänge in Zellen für Export

Forumthread: Feste Zeichenlänge in Zellen für Export

Feste Zeichenlänge in Zellen für Export
12.09.2002 21:06:21
Rolf
Hallo again !

Möchte für Weiterverarbeitung eine Exceltabelle als txt oder csv exportieren. Das ist erstmal kein Problem. ABER: Auf dem anderen System (AIX) müssen die Felder in einer festen Länge eingelesen werden. D.h.: Excel Zelle hat z.B. 20 Zeichen(kann aber variabel oder leer sein) aber Feld muß 30 Zeichen lang sein. Auffüllen mit Leerzeichen funktioniert meines Wissens nicht bei txt oder csv, oder ? Mein Ansatz war: Benutzer definierte Formatierung, aber das hat leider nicht ganz hingehauen. :-(

Danke

Rolf

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Makrolösung
12.09.2002 21:32:37
Ramses
Hallo Rolf,

Markiere den Bereich den du exportieren willst und lass dann das Makro laufen:

Sub Replace_to_30_Char()
Dim c As Range
Dim i As Integer, n As Integer
For Each c In Selection
    If c.HasFormula And Len(c.Value) < 31 Then
        temp = c.Value
        For i = Len(c.Value) To 30
            temp = temp & "."
        Next i
        c.Value = temp
    End If
    If Len(c.Value) < 31 Then
        temp = c.Value
        For i = Len(c.Value) To 30
            temp = temp & "."
        Next i
        c.Value = temp
    End If
    If Len(c) > 30 Then
        c.Value = Left(c, 30)
    End If
Next
End Sub
     Code eingefügt mit Syntaxhighlighter 1.14

Das Makro füllt alle zellen mit einem Punkt auf bzw. kürzt die Einträge auf 30 Zeichen. Formeln werden separat behandelt, das heisst zuerst wird der Wert ermittelt anschliessend die Formel mit dem Wert überschrieben und mit Punkten aufgefüllt.

Gruss Rainer

Anzeige
Re: Makrolösung
12.09.2002 21:40:26
Rolf
Hallo Rainer,

kann "." auch " " sein ? Sonst habe alle "freien" Felder aufgefüllt durch "." Das darf nicht sein. Auch habe ich ca. 35 Spalten mit unterschiedlichen Feldlängen. Da müsste ich dein Makro 34 mal kopieren und dann jede Zelle überprüfen lassen. Hatte ich vielleicht nicht so deutlich formuliert.

Danke, so far

Rolf

Anzeige
Sollte schon gehen....
12.09.2002 22:02:37
Rames
Hallo Rolf,

markiere die Spalte die du formatieren willst und ruf das Makro auf. Du wirst vorher gefragt auf wieviel Zeichen du limitieren willst.

Sub Replace_to_30_Char()
Dim c As Range
Dim i As Integer, n As Integer
Dim Limit As Integer
Limit = Int(InputBox("Welche Zeichenlänge", "Limit prüfen", "30"))
For Each c In Selection
    'Wenn leere Zellen auch gefüllt werden sollen
    'von der nächsten Zeile das Kommentarzeichen entfernen
    'If Not IsEmpty(c) Then
        If c.HasFormula And Len(c.Value) < Limit + 1 Then
            temp = c.Value
            For i = Len(c.Value) To Limit
                temp = temp & "."
            Next i
            c.Value = temp
        End If
        If Len(c.Value) < Limit + 1 Then
            temp = c.Value
            For i = Len(c.Value) To Limit
                temp = temp & "."
            Next i
            c.Value = temp
        End If
        If Len(c) > Limit Then
            c.Value = Left(c, Limit)
        End If
    'Wenn oben das Kommentarzeichen entfernt wurde
    'auch hier entfernen
    'End If
Next
End Sub
     Code eingefügt mit Syntaxhighlighter 1.14


Gruss Rainer

Anzeige
Geht gut, aber langsam ....
12.09.2002 23:01:05
Rolf
Hallo Rainer,

das Makro funktioniert gut, auch mit " " statt "." - Als txt Datei abgespeichert bleiben die "blanks" stehen. Auf AIX-Seite kann ich leider noch nicht prüfen, da mir die Doku noch fehlt. Aber das Makro läuft sehr langsam, bei ca 20 Zellen aufgehängt oder ist meine Büchse zu schlapp ? Das muss ich mal ohne extrem-Multitasking ausprobieren.

Danke Dir für Deine Mühe

Rolf

PS: Kennst du dich so richtig gut aus mit VB ? Hätte da nämlich noch ein etwas größeres Projekt

Anzeige
Zu schlapp :-)
12.09.2002 23:08:16
Ramses
Hallo Rolf,

Knapp 30000 Zellen in etwas 1 Minute :-)) ohne Probleme.
Mit VB habe ich kein Problem, aber für ein grösseres Projekt habe ich derzeit einfach keine Zeit.

Gruss Rainer

OK, Zu schlapp =:- O
12.09.2002 23:15:43
Rolf
Hallo Rainer,

dachte ich mir.

Naja, grosses Projekt ist immer eine Betrachtungsweise, wenn man etwas nicht beherrscht. Es dreht sich eigentlich um ein größeres Makro mit einlesen von Daten und Aufbereitung, hatte ich mal hier gepostet, hat aber keiner reagiert.

Anzeige
;
Anzeige

Infobox / Tutorial

Feste Zeichenlänge in Zellen für den Export


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass Deine Excel-Zellen eine feste Zeichenlänge aufweisen, die beim Exportieren als CSV oder TXT benötigt wird, kannst Du ein VBA-Makro verwenden. Hier sind die Schritte, die Du befolgen solltest:

  1. Öffne Excel und lade das Dokument, das Du exportieren möchtest.

  2. Drücke Alt + F11, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul:

    • Klicke auf "Einfügen" und wähle "Modul".
  4. Kopiere den folgenden Code in das Modul:

    Sub Replace_to_30_Char()
       Dim c As Range
       Dim i As Integer, Limit As Integer
       Limit = 30 ' Hier kannst Du die maximale Zeichenanzahl anpassen
    
       For Each c In Selection
           If Len(c.Value) < Limit Then
               c.Value = c.Value & String(Limit - Len(c.Value), " ")
           ElseIf Len(c.Value) > Limit Then
               c.Value = Left(c.Value, Limit)
           End If
       Next
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Markiere die Zellen, die Du anpassen möchtest.

  7. Führe das Makro aus, indem Du auf "Entwicklertools" > "Makros" gehst und das Makro auswählst.

Jetzt sind Deine Zellen bereit für den Export, wobei jede Zelle die gewünschte Zeichenlänge aufweist.


Häufige Fehler und Lösungen

  • Fehler: Das Makro läuft sehr langsam.

    • Lösung: Stelle sicher, dass Du keine unnötigen Anwendungen im Hintergrund laufen hast, die die Leistung beeinträchtigen könnten.
  • Fehler: Zellen werden nicht korrekt gefüllt.

    • Lösung: Überprüfe den Code, um sicherzustellen, dass die maximale Zeichenanzahl richtig eingestellt ist. Achte darauf, dass die Zeichenlängen in den Einstellungen zu Deinem Exportformat passen.

Alternative Methoden

Falls Du kein Makro verwenden möchtest, kannst Du auch die folgende Methode ausprobieren:

  1. Verwende die CONCATENATE-Funktion oder &, um die Zellen mit Leerzeichen zu füllen:
    =A1 & REPT(" ", 30 - LEN(A1))
  2. Kopiere die Formel nach unten, um sie auf andere Zellen anzuwenden.

Diese Methode ist einfach, kann jedoch zeitaufwändig sein, wenn Du viele Zellen hast.


Praktische Beispiele

Angenommen, Du hast eine Liste von Namen in den Zellen A1 bis A10 und möchtest sicherstellen, dass jede Zelle genau 30 Zeichen hat:

  • Eingabewerte:

    • A1: Max
    • A2: Anna
    • A3: Peter
  • Code in der Zelle B1:

    =A1 & REPT(" ", 30 - LEN(A1))

Wenn Du diese Formel nach unten ziehst, erhältst Du in den Zellen B1 bis B3:

  • B1: "Max "
  • B2: "Anna "
  • B3: "Peter "

Tipps für Profis

  • Verwende den Trim-Befehl in VBA, um führende und nachfolgende Leerzeichen zu entfernen, bevor Du die Zellen füllst.
  • Teste Dein Makro in einer Kopie Deiner Datei, um Datenverluste zu vermeiden.
  • Berücksichtige die csv maximum characters per cell-Einschränkungen beim Export, um sicherzustellen, dass die Daten korrekt verarbeitet werden.

FAQ: Häufige Fragen

1. Wie kann ich die Zeichenlänge anpassen?
Du kannst die Zahl im Makro oder der Formel ändern, um die Zeichenlänge auf Deinen Bedarf anzupassen.

2. Funktioniert das auch mit Excel Online?
Nein, VBA-Makros sind nur in Desktop-Versionen von Excel verfügbar. Du musst Excel auf Deinem Computer verwenden, um diese Lösungen anzuwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige