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

Forumthread: Text auf Zellbereich verteilen

Text auf Zellbereich verteilen
mark
moin,
ich hatte mal in einer Firma eine Funktion, die hat einen Text, der in eine Zelle geschrieben wurde (z.B. einen Satz der länger war als eine Seite breit ist) per Icon auf einen markierten Bereich aufgeteilt. Ich habe dann einfach 2 oder 3 Zeilen in Seitenbreite markiert und die Umbrüche innerhalb der Zelle haben sich dann so gesetzt, dass der Text (und zwar noch in einer Zelle) so formatiert war, dass er gut auf die Seite gepasst hat. Kennt jemand die Funktion? Die fehlt mir manchmal sehr !
PS: Mit Zellen verbinden möchte ich nicht arbeiten, da ich die Texte als Fußtexte unter einer Tabelle brauche. Oder geht es in Excel wie in Word mit Fußnoten (habe ich nirgendwo gefunden)
Anzeige
AW: Text auf Zellbereich verteilen - Zusatzfrage
19.08.2009 09:47:26
fcs
Hallo Mark,
du möchtest als nicht einfach "nur" mit dem Zellen-Format Ausrichtung-Textausrichtung "Zeilenumbruch" arbeiten?
Sondern am Ende jeder Zeile innerhalb der Zelle soll bei überlangen Texten zusätzlich ein Zeilenumbruch stehen, den man manuell mit der Tastenkombination Alt+Enter erzeugt?
Gruß
Franz
Anzeige
AW: Text auf Zellbereich verteilen
19.08.2009 09:48:32
Ramses
Hallo
Normalerweise findest du das in den Zell-Format einstellungen: "Format - Mehr - Regoister Ausrichtung - Option Zeilenumbruch"
Gruss Rainer
Aber meine Herren, er hat doch erklärt,...
19.08.2009 10:02:41
Luc:-?
...was er will — Fußnoten unter einer Tabelle; da kann man sonst wirklich nur mit verbundenen Zellen oder alternativ mit Textfeldern arbeiten... ;-)
Moin, Luc :-)
Anzeige
Unnú hatz ihm d'Sprache vaschlarn... ;-)
19.08.2009 11:58:33
Luc:-?
:-?
AW: Unnú hatz ihm d'Sprache vaschlarn... ;-)
19.08.2009 13:50:32
mark
danke erst mal für die vielen tipps, mußte zwischen durch auch ein wenig arbeiten (meeting) leider ist die zündende lösung noch nicht dabei. Ich habe mich auch etwas undeutlich ausgedrückt, ist mir später aufgefallen.
Ich möchte einen überlangen Text, der in einer Zelle (A1) steht und weit über die nächsten Spalten geht auf eine Länge begrenzen, die ich mit einem markierten Bereich wähle und den Rest in die darunter liegende Zelle schicken.
Die Funktion (evtl. hat da in meiner alten Firma jemand ein Makro geschrieben) hieß ganz einfach TEXT und war als Icon in meinem Excel auswählbar.
Beispiel:
Der Text in Zelle A1 "Heute ist Mittwoch der 19.08.2009 es ist ein wunderschöner Tag, die Sonne scheint und ich habe überhaupt keine Lust mehr zum Arbeiten und würde viel lieber am See sitzen."
geht ohne Umbruch bei mir bis N1 meine Seitenbreite ist aber nur A - G.
Ich markiere jetzt den Bereich A1 bis G1 und drücke auf meine Funktion "TEXT" . Der Satzteil "ich habe überhaupt keine Lust mehr zum Arbeiten und würde viel lieber am See sitzen. "
wandert in die Zelle A2.
Wenn ich nur A1-D1 markiere, verteilt sich der Text auf die erforderliche Anzahl an Zellen (A1 - A4)
Leider habe ich gar keine Ahnung von visual und Makros, daher wäre eine etwas genaue anleitung sehr schön, wenn mir jemand einen quelltext schickt.
Vielleicht war das jetzt präziser
vielen Dank und freue mich auf Hilfe
marK :-)
Anzeige
AW: Unnú hatz ihm d'Sprache vaschlarn... ;-)
19.08.2009 18:21:39
fcs
Hallo Mark,
hier mal ein Ansatz, der die Teil-Texte in einen Hilfsbereich überträgt und dabei überwacht, ob sich die Zeilenhöhe ändert.
Diese Makro kopierst du im VBA-Editor in ein allgemeiens Modul deiner Persönlichen Makro Arbeitsmappe (PERSONL.XLS).
Jetzt kannst in Excel eine Symbolleiste-Anpassen oder besser auch neu Anlegen.
Menü Ansicht--Symbolleisten--Anpassen.
Im Dialog Register "Symbolleisten" wählen, Neu (name für Leiste eingeben) und Ok.
Im Dialog Register "Befehle" unter "Kategorie" "Makros" wählen. Dann unter "Befehle" "Benutzerdefinierte Schaltfläche" wählen und bei gedrückter linker Maustaste in die neue Symbolleiste ziehen.
Rechte-Maus-Klick auf neues Symbol und Makro zuweisen und ggf. weitere Einstellungen für den Button machen.
Anpassen-Dialog schließen.
Gruß
Franz
P.S.: Es kann sein, dass der Bereich der gedruckten Daten vorübergehend in Unordnung gerät - wenn kein Druckbereich fest definiert ist. Sollte aber nach Speichern und erneutem Öffnen der Datei wieder ok sein
Sub TextVerteilen()
'Verteilt selektierten text in darunter liegende Zeilen
Dim Bereich As Range, Zelle As Range
Dim strText As String, strTextNeu As String, strTextAlt
Dim arrText, lngWorte As Long, zeile As Long, Hoehe As Double
Dim wks As Worksheet
Set Bereich = Selection
If Bereich.Rows.Count > 1 Then
MsgBox "Bitte Zellen nur in einer Tabellenzeile selektieren!"
Exit Sub
End If
Set wks = ActiveSheet
strText = Bereich.Range("A1").Value
arrText = Split(strText, " ")
'Zelle in Spalte unterhalb der Tabellendaten festlegen
With wks
Set Zelle = .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row + 10, Bereich.Column)
End With
'Selektierte Zelle kopieren in Zelle
Bereich.Range("a1").Copy Zelle
Zelle.ClearContents
Hoehe = Zelle.EntireRow.RowHeight 'Referenzhöhe für zeile merken
'Zellenbereich so formatieren, dass Zeilenhöhe angepasst wird, wenn zuviel Text
With Zelle
With wks.Range(Zelle, .Offset(1, Bereich.Columns.Count - 1))
.HorizontalAlignment = xlHAlignCenterAcrossSelection
.WrapText = True
End With
.Offset(0, Bereich.Columns.Count).WrapText = False
End With
zeile = 0
'gemerkte texte aus Array einlesen
For lngWorte = LBound(arrText) To UBound(arrText)
strTextNeu = strTextAlt & IIf(strTextAlt = "", "", " ") & arrText(lngWorte)
Zelle.Value = strTextNeu
'Zellhöhe prüfen
If Zelle.EntireRow.RowHeight > Hoehe Then
If zeile > 0 Then
'Format aus selektierter Zelle in folgezeile kopieren
Bereich.Copy
Bereich.Range("A1").Offset(zeile, 0).PasteSpecial Paste:=xlPasteFormats
End If
'Teiltext eintragen
Bereich.Range("A1").Offset(zeile, 0).Value = strTextAlt
'Vorgaben für nächste zeile setzen
strTextAlt = arrText(lngWorte)
zeile = zeile + 1
'Prüfen, ob letztes Wort eingelesen wurde
ElseIf lngWorte = UBound(arrText) Then
If zeile > 0 Then
'Format aus selektierter Zelle in folgezeile kopieren
Bereich.Copy
Bereich.Range("A1").Offset(zeile, 0).PasteSpecial Paste:=xlPasteFormats
End If
'Resttext eintragen
Bereich.Range("A1").Offset(zeile, 0).Value = strTextNeu
Else
strTextAlt = strTextNeu
End If
Next
'Prüf-/Testzellen wieder löschen
Zelle.Clear
Zelle.EntireRow.Delete
End Sub

Anzeige
Und was ist mit TxRows,...
20.08.2009 00:35:35
Luc:-?
...Mark?
Nehme an, du weißt nicht wie du das anwenden sollst?! Genau wie eine xlFkt — allerdings im Verbund mit anderen Fktt wie du den verlinkten Archiv-Threads entnehmen könntest. Dein Text kann dabei in einer separaten Zelle stehen oder gleich als Arg1 in der udFkt. Außerdem hast du die Möglichkeit, ein bedingtes Trennzeichen als Arg3 anzugeben (in den Text kannst du die an sinnvollen Stellen einfügen). Arg2 ist die vorgesehene maximale Länge einer Textzeile in Zeichen. Außerdem kann als Arg4 angegeben wdn, ob es sich um eine nicht-proportionale Schrift handelt (Courier wird automatisch erkannt!).
Die folgd Abbildung zeigt eine Anwendungsmöglichkeit mit einer Formel. Dabei kommt auch die in der Abbildung dargestellte udFkt Splitt zum Einsatz, um die Zeichenkette an den eingeschobenen Zeilenumbrüchen zu trennen. Mit INDEX wird dann die jeweilige Teilkette ausgewählt. Statt INDEX kannst du auch MTRANS verwenden, um mit einer Matrixfml Teiltexte auf ausgewählte Zeilen zu verteilen.
Beide udFktt müssen in ein sog normales Modul des VB-Projektes der Arbeitsmappe eingetragen wdn. Ggf kannst du solche Prozeduren auch in einem separaten Projekt sammeln, das du auch als AddIn in Xl einbinden kannst (dazu findest du einiges im Herber-Archiv)...
Userbild
Gruß Luc :-?
PS: Eine kurze Mitteilung deiner Entscheidung würde uns schon interessieren...
Anzeige
Noch ein Hitze-Opfer, schade! owT
21.08.2009 14:15:03
Luc:-?
:-?
AW: Noch ein Hitze-Opfer, schade! owT
24.08.2009 09:19:53
mark
moin allerseits,
kein Hitzeopfer nur im normalen Wochenendwahnsinn begraben. Ich habe mir die vielen Vorschläge genau angeschaut. Dem, was ich mir vorgestellt habe, kommt der Quellcode von Franz am nächsten (bzw. ist es genau das was ich mir vorgestellt habe).
Einfügen in VisualBasic Editor, abspeichern ausführen etc hat wunderbar geklappt. Ich finde aber leider meine Persönlich.xls nicht. Da gibt´s nur die Möglichkeit, das Makro in der aktuellen Arbeitsmappe abzuspeichern. Darüber hinaus gibt´s nur das schreibgeschütze Modul Eurotool.
Wie sich jeder vorstellen kann, hätte ich diese Funktion gern in jeder neuen Arbeitsmappe. Gibt´s da noch einen Tip?
danke marK :-)
Anzeige
AW: Persönliche Makroarbeitsmappe einrichten
24.08.2009 17:17:53
fcs
Hallo Mark,
falls die perönliche Makroarbeitsmappe noch nicht angelegt ist, dann zeichne mit dem Makrorecorder ein Makro auf. Als Speicherort dann im angezeigten Dialog die persönliche Makroarbeitsmappe auswählen.
Excel legt diese Datei an und du kannst jederzeit auf die in dieser Mappe gespeicherten Makros zugreifen.
Gruß
Franz
Anzeige
Eine Fkt per Icon...? Gibt's wohl nicht,...
19.08.2009 09:57:01
Luc:-?
...Mark,
aber wie wär's mit TxRows? Diese (echte) udFkt dürfte dein Problem ohne verbundene Zellen lösen... ;-)
Moin, Luc :-?
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Text auf Zellbereich verteilen in Excel


Schritt-für-Schritt-Anleitung

Um einen langen Text in einer Excel-Zelle gleichmäßig auf mehrere Zellen zu verteilen, kannst du ein einfaches Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic Editor:

    • Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Kopiere den VBA-Code:

    • Füge den folgenden Code in das Modul ein:
    Sub TextVerteilen()
       'Verteilt selektierten Text in darunter liegende Zeilen
       Dim Bereich As Range, Zelle As Range
       Dim strText As String, strTextNeu As String, strTextAlt
       Dim arrText, lngWorte As Long, zeile As Long, Hoehe As Double
       Dim wks As Worksheet
       Set Bereich = Selection
       If Bereich.Rows.Count > 1 Then
           MsgBox "Bitte Zellen nur in einer Tabellenzeile selektieren!"
           Exit Sub
       End If
       Set wks = ActiveSheet
       strText = Bereich.Value
       arrText = Split(strText, " ")
       With wks
           Set Zelle = .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row + 1, Bereich.Column)
       End With
       Zelle.ClearContents
       Hoehe = Zelle.EntireRow.RowHeight
       With Zelle
           .WrapText = True
       End With
       zeile = 0
       For lngWorte = LBound(arrText) To UBound(arrText)
           strTextNeu = strTextAlt & IIf(strTextAlt = "", "", " ") & arrText(lngWorte)
           Zelle.Value = strTextNeu
           If Zelle.EntireRow.RowHeight > Hoehe Then
               If zeile > 0 Then
                   Bereich.Offset(zeile, 0).Value = strTextAlt
               End If
               strTextAlt = arrText(lngWorte)
               zeile = zeile + 1
           Else
               strTextAlt = strTextNeu
           End If
       Next
       Zelle.Clear
    End Sub
  4. Schließe den VBA-Editor:

    • Speichere und schließe den Editor, indem du auf das X klickst.
  5. Führe das Makro aus:

    • Markiere die Zelle mit dem langen Text, gehe zu Entwicklertools -> Makros, wähle TextVerteilen und klicke auf Ausführen.

Jetzt wird der Text aus einer Zelle gleichmäßig auf die darunter liegenden Zellen verteilt.


Häufige Fehler und Lösungen

  • Fehler: "Bitte Zellen nur in einer Tabellenzeile selektieren!"
    Lösung: Stelle sicher, dass du nur eine Zeile markierst, bevor du das Makro ausführst.

  • Fehler: Text wird nicht richtig verteilt
    Lösung: Überprüfe den Text in der Zelle und stelle sicher, dass er nicht manuell mit Zeilenumbrüchen formatiert ist. Verwende Alt + Enter nur für manuelle Umbrüche.


Alternative Methoden

  1. Verwendung von Excel-Funktionen:

    • Anstatt ein Makro zu verwenden, kannst du auch die Funktion TEXTVERKETTEN (in neueren Excel-Versionen) nutzen, um Texte aus mehreren Zellen zu kombinieren und anschließend in die gewünschte Zelle zu übertragen.
  2. Text in Zeilen aufteilen:

    • Du kannst auch die Funktion TEXTAUFTEILEN nutzen, um den Text in einer Zelle nach bestimmten Trennzeichen in mehrere Zellen aufzuteilen.

Praktische Beispiele

  • Beispiel eines langen Textes in Zelle A1:
    "Heute ist Mittwoch der 19.08.2009 es ist ein wunderschöner Tag."
  • Nach dem Ausführen des Makros mit markierter Zelle A1 wird der Text in die Zellen A2, A3 usw. verteilt, je nach Länge des Textes und den markierten Zellen.

Tipps für Profis

  • Text auf Zellen verteilen: Wenn du den Text auf mehrere Zellen verteilen möchtest, kannst du die Zielzellen vor dem Ausführen des Makros markieren.

  • Makros anpassen: Passe das Makro an, um es spezifischer auf deine Bedürfnisse zuzuschneiden, z.B. die maximale Länge für jede Zeile festzulegen.

  • Speichern der persönlichen Makroarbeitsmappe: Wenn du die Funktion in jeder neuen Arbeitsmappe nutzen möchtest, speichere das Makro in der persönlichen Makroarbeitsmappe (PERSONAL.XLSB).


FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen?
Du kannst die Variablen im Makro ändern, um die maximale Länge des Textes zu steuern oder das Format der Zellen zu ändern.

2. Gibt es eine Möglichkeit, das Makro als Schaltfläche hinzuzufügen?
Ja, du kannst eine Schaltfläche in der Symbolleiste für den Schnellzugriff hinzufügen und das Makro zuweisen, damit du es schnell ausführen kannst.

3. Funktioniert das auch in älteren Excel-Versionen?
Das Makro sollte in den meisten Excel-Versionen ab 2007 funktionieren. Stelle sicher, dass die Makros in deinen Excel-Einstellungen aktiviert sind.

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