Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Benötige Formel - Text aus mehreren Zeilen
#1
Hallo zusammen,


ich benötige eine Formel für folgendes scenario:

In Spalte C stehen mehrzeilig Textzeilen (mal mehr mal weniger Zeilen)
In Spalte B steht eine Positionsnummer, diese Nummer markiert den Start des Textes der zusammengefügt werden soll.

Beispiel:

Spalte B | Spalte C

P12345 | Korpus
             | 3000x900x1000mm
             | ,Ausführung: MDF wasserfest
P54321 | Tisch
             | 2000x1000x800mm
             | ,Ausführung: Gestell in Metall, Tischplatte in Massivholz

In Spalte E soll dann neben der Positionsnummer der gesamte Text stehen.

Ergebnis:

Spalte B | Spalte C                                                                          | Spalte E
P12345 | Korpus                                                                             | Korpus 3000x900x1000mm, Ausführung: MDF wasserfest
             | 3000x900x1000mm,
             | Ausführung: MDF wasserfest
P54321 | Tisch                                                                                | Tisch 2000x1000x800mm, Ausführung: Gestell in Metall, Tischplatte in Holz
             | 2000x1000x800mm
             | ,Ausführung: Gestell in Metall, Tischplatte in Holz

Unteranderem sollte ein " " (Leerzeichen) beim zusammenfügen pro Zeile eingefügt werden.

Ich mache das mühsam mit =C1&" "&C2&" "&C3....

Hoffe jemand hat eine Lösung für mich!

EDIT: Die Positionsnummern beginnen nicht immer mit "P...." also sobald in Spalte B irgentwas steht soll der Text nach unten zusammengefügt werden bis die nächste Nummer beginnt oder ein Zeichen erscheint


Vielen Dank inzwischen,
Gruß,

Luffy  :100:

Personaltrainer - Ernährungsberater 
Antworten Top
#2
Hallo L...,

da Excel 2013 die Funktion Textverketten noch nicht kennt, empfehle ich eine UDF (User Defined Function).

Diese Funktion muss in ein allgemeines Modul des VBA-Projektes der Datei eingetragen werden.


Code:
Option Explicit

Public Function Verbinden(rngListe As Range) As String
Dim lngZeile As Long
Dim lngZeilen As Long
Dim blnWeiter As Boolean
Dim varListe As Variant

blnWeiter = True
Verbinden = ""
If rngListe.Columns.Count = 1 Then
    Verbinden = "#Fehler, mindestens zwei Spalten"
Else
    varListe = rngListe.Value
    If varListe(1, 1) <> "" Then
        Verbinden = varListe(1, 2)
        lngZeile = 2
        lngZeilen = UBound(varListe, 1)
        Do While lngZeile <= lngZeilen And blnWeiter
            If varListe(lngZeile, 1) = "" Then
                Verbinden = Verbinden & " " & varListe(lngZeile, 2)
            Else
                blnWeiter = False
            End If
            lngZeile = lngZeile + 1
        Loop
    End If
End If
End Function


Angehängte Dateien
.xlsm   Verbinden.xlsm (Größe: 15,17 KB / Downloads: 3)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#3
Hi,

der Anfang war doch schon mal richtig. Du kannst das mit einer Formel, die du runterziehst, einfach bewerkstelligen; mühsam alles einzeln einzugeben ist nicht nötig.

Arbeitsblatt mit dem Namen 'Tabelle1'
ABC
1P-12345korpuskorpus platte beine
2platte
3beine
499999-aholzholz kunststoff glas
5kunststoff
6glas
7aaaalualu chrom stahl
8chrom
9stahl

ZelleFormel
C1=WENN(A1<>"";B1&" "&B2&" "&B3;"")
Verwendete Systemkomponenten: [Windows (32-bit) NT :.00] MS Excel 2013
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#4
Hallo Günther,


Zitat:In Spalte C stehen mehrzeilig Textzeilen (mal mehr mal weniger Zeilen)

Es sind nicht immer 3 Zeilen, die Zeilen  können von 1-11 gehen oder auch mehr.

Habe jetzt eine umständliche Formel selbst gebastelt.

Aber wenn jemand eine einfachere Variante hat, kann er sie mir gerne noch posten, ich lerne gerne dazu :)

Meine umständliche und lange Formel:


Code:
=WENN(FJ2="";"";WENN(UND(FJ2<>"";FJ3<>"");FK2;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="";FJ7="";FJ8="";FJ9="";FJ10="";FJ11="";FJ12="";FJ13="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6&" "&FK7&" "&FK8&" "&FK9&" "&FK10&" "&FK11&" "&FK12&" "&FK13;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="";FJ7="";FJ8="";FJ9="";FJ10="";FJ11="";FJ12="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6&" "&FK7&" "&FK8&" "&FK9&" "&FK10&" "&FK11&" "&FK12;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="";FJ7="";FJ8="";FJ9="";FJ10="";FJ11="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6&" "&FK7&" "&FK8&" "&FK9&" "&FK10&" "&FK11;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="";FJ7="";FJ8="";FJ9="";FJ10="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6&" "&FK7&" "&FK8&" "&FK9&" "&FK10;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="";FJ7="";FJ8="";FJ9="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6&" "&FK7&" "&FK8&" "&FK9;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="";FJ7="";FJ8="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6&" "&FK7&" "&FK8;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="";FJ7="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6&" "&FK7;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="";FJ6="");FK2&" "&FK3&" "&FK4&" "&FK5&" "&FK6;WENN(UND(FJ2<>"";FJ3="";FJ4="";FJ5="");FK2&" "&FK3&" "&FK4&" "&FK5;WENN(UND(FJ2<>"";FJ3="";FJ4="");FK2&" "&FK3&" "&FK4;WENN(UND(FJ2<>"";FJ3="");FK2&" "&FK3;)))))))))))))
Gruß,

Luffy  :100:

Personaltrainer - Ernährungsberater 
Antworten Top
#5
Hallo,

hier einmal eine Formelversion für alle die Textverketten nutzen können:
Code:
{
=WENN(B2="";"";TEXTVERKETTEN(" ";WAHR;TEIL(C2:$C7;1;LÄNGE(C2:$C7)*(ZEILE(C2:$C7)<AGGREGAT(15;6;ZEILE(B3:B$8)/(B3:B$8<>"");1)))))
}
Achtung! Matrixformel. Die geschweiften Klammern werden nicht mit eingegeben, sondern jede Bearbeitung wird mit Strg+Shift+Enter abgeschlossen.


Angehängte Dateien
.xlsm   Verbinden.xlsm (Größe: 15,96 KB / Downloads: 3)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#6
(20.04.2018, 12:29)Ego schrieb: für alle die Textverketten nutzen können

Moin!
Hier im Forum können ALLE auf Textverketten() zugreifen, da sie über einen Internetanschluss verfügen.
(Stichwort: onedrive.live.com und dann Neu, Excel-Arbeitsmappe)

Als reine Alternative habe ich mal etwas ohne Matrixformel entwickelt.
Dazu müssen aber die Lücken in Spalte A zunächst mit dem oberen Wert aufgefüllt werden:
  • A1 markieren, Strg+a
  • F5, Inhalte, Leerzellen
  • in die aktivierte Zelle A3: =A2 mit Strg+Enter abschließen
  • Markierung belassen
  • Strg+1, ben.def. Zahlenformat ;;; vergeben, damit der Inhalt unsichtbar wird
Jetzt reicht die Formel:
=WENN(A2<>A1;TEXTVERKETTEN(" ";WAHR;BEREICH.VERSCHIEBEN(B2:B1000;0;0;ZÄHLENWENN(A:A;A2)));"")

ABCDE
1SpASpBSpE
2A11 2 3
32
43
5B11 2
62
7C11 2 3 4
82
93
104

ZelleFormatWert
A3;;;A

ZelleFormel
E2=WENN(A2<>A1;TEXTVERKETTEN(" ";WAHR;BEREICH.VERSCHIEBEN(B2:B1000;0;0;ZÄHLENWENN(A:A;A2)));"")
A3=A2
E3=WENN(A3<>A2;TEXTVERKETTEN(" ";WAHR;BEREICH.VERSCHIEBEN(B3:B1001;0;0;ZÄHLENWENN(A:A;A3)));"")

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
… und wer das volatile BEREICH.VERSCHIEBEN() nicht mag, kann natürlich auch INDEX() nehmen:
=WENN(A2<>A1;TEXTVERKETTEN(" ";WAHR;INDEX(B2:INDEX(B2:B9;ZÄHLENWENN(A:A;A2));;1));"")

ABCDEF
1SpASpBSpEalternativ
2A11 2 31 2 3
32
43
5B11 21 2
62
7C11 2 3 41 2 3 4
82
93
104

ZelleFormel
E2=WENN(A2<>A1;TEXTVERKETTEN(" ";WAHR;BEREICH.VERSCHIEBEN(B2:B9;;;ZÄHLENWENN(A:A;A2)));"")
F2=WENN(A2<>A1;TEXTVERKETTEN(" ";WAHR;INDEX(B2:INDEX(B2:B9;ZÄHLENWENN(A:A;A2));;1));"")
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Excel-Online kann TEXTVERKETTEN(), wie auch xl365, GoogleDocs (dort einmal eine Einschränkung erlebt) und LO ab 6 (dort heißt es VERBINDEN()).

Oft wird es aber als {}-Formel benötigt. Dann folgendes Vorgehen:
  • In lokalem Excel ohne TEXTVERKETTEN() =_xlfn.TEXTJOIN() 1) verwenden und blind {}en. Blind heißt: Man sieht mangels TEXTVERKETTEN kein Ergebnis.
  • In OneDrive speichern mit Excel-Online öffnen.
{}-Formeln werden dort normal gerechnet, mit {} angezeigt und können kopiert und gelöscht werden. Auch Bezüge können darin verschoben werden, wenn man die Quellen verschiebt und die Formel selbst nicht anfasst. Nur editiert kann {} nicht werden.

LO und Docs kosten nichts und können die Eingabe daher komfortabler machen, als mit dem Blindsprung.

1) das geht ab xl2007 und mit Compatibility Pack ab xl2000.
Antworten Top
#9
@LCohen:
Danke für den Direktlink und die Ausführungen zu Matrixformeln, die gemäß meinem Konzept aber ja nicht benötigt werden.
Aber: Gut zu wissen!

Noch ne Anmerkung:
Der Bereich B2:B9 in meinen Formeln verkettet maximal 8 Textbausteine.
Zitat TE:
Zitat:die Zeilen  können von 1-11 gehen oder auch mehr.

daher muss der Bereich etwas erweitert werden oder auch mehr …  :21:
Aber dies sollte ja klar sein.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste