13.2k Aufrufe
Gefragt in Tabellenkalkulation von sacul Einsteiger_in (11 Punkte)
Hallo,

Ich hoffe mir kann jemand helfen, wäre echt net.

Ich bearbeitete wöchentlich eine Excel liste zur Vorbereitung auf ein Mailing. Spalte B und Spalte E dürfen nicht mehr als 40 Zeichen/Stellen beinhalten und müssen von hand korrigiert werden/gekürzt werden.

In Word habe ich die Möglichkeit ein Text zu markieren und unten Links auf den Tab Wörter zu klicken und es zeigt mir die genaue Anzahl der Stellen/Zeichen mit und ohne Leerzeichen an. Was ich brauche ist die Anzahl mit Leerzeichen.

Vor ein paar Monaten war das ganze noch sozial jetzt bin ich bald bei 18000 Zellen ...

Meine Frage also, gibt es eine Einstellung in Excel so dass ich den gleichen tab habe wie in Word oder eine eine andere Funkion?

Ich muss das ganze immer noch von Hand korrigieren aber wenn ich eine automatische Anzeige hätte wäre ich um vieles schneller ...

Danke im Voraus und merry xmas and a happy New Year.

9 Antworten

0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hi,

in Excel gibt es dafür eine Formel:

= länge(a1)

a1 steht dabei für die Zelle, deren Inhaltslänge angezeigt werden.

In diesem Sinne... have a nice Day...

und Xmas and happy New Year to all.... Gruß Helmut
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Nachträg zu AW 1

eine andere Möglichkeit wäre über >>Gültigkei<<t zu finden unter Daten.

Allerdings würde dann nur der Hinweis kommen, dass man die Einstellung der Textlänge überschritten hat, was dann wiederum in Kombi der AW1 stehen sollte.

Der Nachteil hierbei ist, dass immer die Eingabe bestätigt sein muss, damit man weiß, ob man noch innerhalb der vorgegebenen Textlänge liegt oder nicht.

In diesem Sinne... wie oben... Gruß Helmut
0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Hallo,

wenn man den Text über Kopieren einfügt wird für die entsprechende Zelle diese o.a. Gültigkeitsprüfung gelöscht und es erfolgt keine Warnung.

Eine Scriplösung ist denkbar, aber da müssten die Script-Spezies ran. Vermutlich würde das aber auf ein einfaches Abschneiden des Textes hinauslaufen. (Von rainberg hab ich mal ein entsprechendes Script gesehen, welches aber auf das gesamte Baltt angewendet wurde)

Wenn ein einfaches Abschneiden nicht erwünscht ist sondern eher ein optischer Hinweis darauf, dass hier noch ein zu langer Text sinnvoll gekürzt werden muss bietet sich eine bedingte Formatierung der Zellen in Spalte B und E an, bei welcher z.B. bei mehr als 40 Zeichen ein roter Rahmen um die Zelle erzeugt wird und dieser wieder verschwindet wenn es incl. Leerzeichen nur noch maximal 40 Zeichen sind.

Gruß
Kalle
0 Punkte
Beantwortet von sacul Einsteiger_in (11 Punkte)
@finger59

Danke für die Antwort. Ich bin nicht der klügste auf diesem Gebiet. Es scheint als ob Sie eine Lösung für mein Problem hätten aber ich bekomme das noch nicht so ganz hin.

Ich habe jetzt eine Zeile ganz ober eingefügt die ansonsten leer ist.

Dann habe ich die ganze Spalte B markiert und oben reingeschrieben = länge (A1) und drücke enter. Jetzt steht #NAME? in meinem Feld B1.

Heisst das ich müsste jedes mal die Formel eingeben z.b. = länge (B37) und für die nächste Zelle wieder oder kann ich das einmal eingeben und es zeigt mir immer ganz ober an wie viele Stellen jetzt in der Zelle sind wo ich mich befinde z.b. B(13456).

Ich hoffe Sie verstehen was ich meine. Eine Schritt für Schritt erklärung wäre echt hilftreich.

Ich hoffe ich überstrapaziere sie nicht ...
0 Punkte
Beantwortet von sacul Einsteiger_in (11 Punkte)
@ KJG17

Danke Kalle,

Verstehe. Das mit dem formatieren der Zellen hört sich plausible an.

Wie genau mache ich das? so dass all die, die länger als 40 Zeichen haben rot umrahmt werden.
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo sacul,

ich werde nicht so richtig schlau aus Deiner Frage.

Willst Du den Zellwert auf 40 Zeichen kürzen oder die Anzahl der Leerzeichen einer Zelle bestimmen?

Ersteres ginge mit dieser Formel

=LINKS(B1;40)

und das Zweite mit dieser Formel

=LÄNGE(B1)-LÄNGE(WECHSELN(B1;" ";""))



Feedback wäre nett
Gruss Rainer
_____________________
Windows 7 Ultimate (x64)
Office 2007 Ultimate
Office 2003 Professional
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hi Sacul,

ja.. bei meiner Lösung mit der =länge(a1)
müsstest Du dann in der nächsten Zeile dann =länge(a2)
vorgeben usw...

Das nach unten kopieren kann man sich ein wenig vereinfachen, wenn man auf unten rechts der Zelle b1 einen Doppelklick macht.

Dann wird, solange wie ein Wert in Zelle A... ein Wert drin steht,
die Formel automatisch nach unten kopiert.

Sobald aber eine Zelle in A mal leer ist, wird dieses automatische
kopieren dann unterbrochen und Du müsstest an der Stelle wieder neu ansetzen...

Also auf jeden Fall einmal kurz kontrollieren.

Die Felder, die dann eine Länge von über 40 haben, könntest Du dann auch mit Filtern schneller erreichen und entsprechend anpassen.

Die Funktion von Filter ist ebenfalls unter Daten zu finden.

Deine Fehlermeldung mit #Name? könnte daher kommen, dass Du entweder eine ältere Excel-Version hast, die länge nicht als Befehl kennt oder aber, Du hast die Formel so wie hier im Text geschrieben =länge (a1) (mit Leerzeichen)
zwischen dem länge und der Klammer darf aber kein Leerzeichen sein.

Wenn diese Lösung für Dich jedoch nicht praktikabel sein sollte, dann müsste Dir jemand mit VBA-Kenntnissen aushelfen.

Dazu fehlen mir allerdings die guten Kenntnisse das aus dem Ärmel zu schütten. Wenn Dir jedoch keiner da weiterhilft, dann melde Dich bitte noch mal und ich bastel Dir das über Weihnachten.
Dazu schreibe mir dann auf den Pager hier mit Angabe Deiner Email-Adresse...

In diesem Sinne... Gruß Helmut
0 Punkte
Beantwortet von kjg17 Profi (34.4k Punkte)
Hallo Sacul,

für die Formel von Rainer werden Hilfsspalten benötigt um die abgeschnittenen Varianten der Texte aus den Spalten B und E auszugeben. Eine Nachbearbeitung von Hand entfällt dann, du musst beim Mailing (Seriendruck?) lediglich dann auf diese Spalten verweisen.

Wenn du die Texte aber nicht einfach nur abschneiden sondern selbst von Hand sinnvoll verkürzen willst fährst du mit der Abfrage der Zeichenzahl wie von Helmut beschrieben besser. Trotzdem will ich die bedingten Formatierung jetzt nicht unter den Tisch fallen lassen, eventuell gefällt dir ja diese Lösungsvariante auch.

Leider hast du deine Excel-Version nicht erwähnt, für eine konkrete Angabe der Vorgehensweise wäre das günstiger gewesen.

Die Formel als zu erfüllendes Kriterium für die bedingte Formatierung lautet in deinem Fall für die Zelle B2 =LÄNGE($B2)>40, achte darauf dass vor der Zeilennummer der Zelle kein Dollarzeichen $ steht weil sonst de Regel nicht entsprechend fortgeschrieben wird. Auch ggf. von Excel selbständig eingefügte Anführungszeichen ' sind zu entfernen damit die Formal dann auch funktioniert. Für das Formatieren der Zellen bei Zutreffen der Bedingung >40 kannst du dann beliebige Einstellungen auswählen.

Hier noch ein Link zu einer -> Beispiel-Tabelle mit einer bedingten Formatierung in Spalte B, die kannst du dir ja mal zum Nachvollziehen des oben gesagten anzeigen lassen und auch mal etwas mit der Änderung von Textlängen herumspielen damit die Funktion deutlich wird.

In dieser Tabelle wird im Moment die bedingte Formatierung nur auf die Zellen B2 bis B200 angewendet. Erweitern kannst du das ganz einfach wenn du in den Einstellungen zur bedingten Formatierung den Anwendungsbereich von momentan $B$2:$B$200 auf beispielsweise $B$2:$B$1000 oder einen beliebigen anderen Bereich abänderst.

Weiterhin habe ich nicht nur einen roten Rahmen sondern auch noch die Schriftfarbe rot eingestellt, dies ermöglicht es dann auch ohne Abfrage der Zeichenzahl über eine Hilfsspalte die Tabelle so zu sortieren dass alle Zeilen mit Textlängen über 40 Zeilen im Block am Anfang der Tabelle werden, was ein lästiges Scrollen in längeren Tabellen überflüssig macht. Nach der Korrektur der Textlängen könnte wieder nach anderen Kriterien umsortiert werden.

Gruß
Kalle
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

vielleicht hilfreich ^^

gruss nighty

tastet alle leerzeichen auf aufeinanderfolgende ab und reduziert diese auf 1

spalten wie angegeben,zeilenende automatische abtastung

Sub LeerZeichenClearGroesserEins()
Dim Lzeile As Long
Dim ZeichenAnz As Integer
Dim Zelle As Range
Lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For Each Zelle In Union(Range("A2:A" & Lzeile), Range("D2:D" & Lzeile))
For ZeichenAnz = 1 To Len(Zelle) - 1
If Mid(Zelle, ZeichenAnz, 1) = " " Then
If Mid(Zelle, ZeichenAnz, 2) = " " Then
Cells(Zelle.Row, Zelle.Column) = Mid(Zelle, 1, ZeichenAnz - 1) & Mid(Zelle, ZeichenAnz + 1, Len(Zelle))
ZeichenAnz = ZeichenAnz - 1
End If
End If
Next ZeichenAnz
Next Zelle
End Sub
...