Länge von Zellen von Rechts zählen

260 Aufrufe
Gefragt 10, Sep 2017 in Tabellenkalkulation von Mitglied (311 Punkte)
Hallo liebe Excelianer,

ich stehe mal wieder vor einer Herausforderung, die ich ohne Eure Hilfe nicht meistern kann.

Und zwar habe ich vor Spezifikationen aus 2 Dateien miteinander zu vergleichen. In der ersten Datei stehen die vierstelligen Zahlen in einer Zelle hintereinander aufgelistet da und sind nur mit einem Leerzeichen voneinander getrennt. Das sieht so aus:

Zelle A2 - 1000 2012 2010

In der zweiten Datei (mit je einer separaten Tabelle für je eine Spezifikation) stehen die einzeln aufgelistet untereinander und das sieht wie folgt aus.

     Tab1 Tab2
A2 1000 1005
A3 2012 2019
A4 2010 3012
A5          4000

Über die Verketten-Funktion habe ich diese einzelnen Werte so miteinander verknüpft, so dass ich das gleiche Bild erhalte wie in Datei 1. Die Verketten-Funktion sieht also wie folgt aus:

=Verketten(A2;" ";A3;" ";A4;" ";A5)

Es ist also zu erkennen, dass ich die Verketten Funktion so angelegt habe, dass die längste Spezifikation (Tab2) sicher erfasst wird.


Nun habe ich aber das Problem, Das kürzere Spezifikationen (z. B. in Tab1) aber falsch erfasst warden, da noch mindestens ein Leerzeichen mit als Ergebnis kommt (dargestellt als _):

1000 2012 2010_

Meine Überlegung ist daher, wie ich mit einer Formel Leerzeichen von rechts wegnehmen kann, bis die erste Zahl erscheint.

Hättet Ihr hier vielleicht eine Lösung?

Vielen lieben Dank im Vorraus und noch einen schönen Sonntag.

Gruss

Peter

3 Antworten

0 Punkte
Beantwortet 10, Sep 2017 von xlKing
Hallo Peter,

die einfachste Lösung wäre eine Wenn-Funktion einzubauen:
=VERKETTEN(A2;WENN(A3<>"";" ";"");A3;WENN(A4<>"";"
";"");A4;WENN(A5<>"";" ";"");A5)

Bei größeren Bereichen, ist das aber mit viel Schreibarbeit verbunden.
Dann kann man alternativ auf eine Benutzerformel zurückgreifen. Dazu
in einem Modul im VBA diesen Code einfügen
[code]Function Verbinden(Bereich As Range, Trennz As String)
  For Each c In Bereich.Cells
    If c <> "" Then Verbinden = Verbinden & c & Trennz
  Next c
  Verbinden = Left(Verbinden, Len(Verbinden) - Len(Trennz))
End Function[/code]Die dann im Excel eingetragene Formel
=Verbinden(A2:A5;" ") liefert dann das selbe Ergebnis wie oben.

Gruß Mr. K.
0 Punkte
Beantwortet 10, Sep 2017 von xlKing
Übrigens. Umgekehrt geht's noch einfacher. Wenn du z.B. aus der
Zelle A2 mit 1000 2012 2010 4000 den dritten Wert auslesen willst
kannst du das auch über VBA lösen.

Function Trennen(Bereich As Range, Trennz As String, Pos As Long)
  arr = Split(Bereich.Cells(1), Trennz)
  Trennen = arr(Pos - 1)
End Function

Mit =Wert(Trennen(A2;" ";3)) erhälst du dann den Wert 2010.
Mr. K.
0 Punkte
Beantwortet 13, Sep 2017 von Mitglied (311 Punkte)
Hallo xlKing,

das ist mir jetzt schon fast peinlich. Bin gar nicht auf die Idee mit IF gekommen.

Vielen Dank.

Gruss

Peter
...