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

Text zu lang

Forumthread: Text zu lang

Text zu lang
27.08.2024 12:35:53
Christian
Hallo, ich habe versucht, mit folgender Formel, Texte die bislang untereinander stehen, nebeneinander zu schreiben.

Ab D2 folgende Formel:

=WENN(UND(A1=A2;B1=B2);C2&"~"&D1;C2)

und das Ganze dann Text in Spalten ~ als Trennzeichen.

Und dann Duplikate entfernen um überflüssige Zeilen zu löschen

Hat auch in fast jeder Zeile funktioniert. Nur leider sind in manchen Zeilen die verketteten Texte so lang geworden, dass sie irgendwann abgeschnitten wurden. Hat jemand eine Alternative für mich?

Danke
Christian

Anzeige

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text zu lang
27.08.2024 12:50:19
daniel
Hi

probiers mal mit

=MTrans(Filter(C:C;(A:A=A2)*(B:B=B2)))

zur Optimierung bei großen Datenmengen passt die Zellbezüge auf die ganzen Spalten auf den tatsächlich genutzten Bereich an.
da es ja reicht, die oberste Zeile einer Gruppe diesbezüglich auszuwerten, kannst du noch ein WENN vorschalten, um die Berechnung in Zeilen, die sowieso gelöscht werden, zu vermeiden.

=Wenn(A1&A2=B1&B2;"";MTrans(Filter(C:C;(A:A=A2)*(B:B=B2))))

die Maximale Textlänge innerhalb einer Zelle ist 32767 Zeichen.
Diese Länge darf auch nicht innerhalb einer Formelberechnung überschritten werden.
ob das Text in Spalten jetzt auch noch Limits hat, weiß ich nicht.


Gruß Daniel
Anzeige
AW: Text zu lang
27.08.2024 17:31:06
daniel
Hi
jetzt nochmal von vorne, da du anscheinend eine sehr große Datenmenge hast, wird das mit Formeln allein schwierig

machs mal so

1. Liste nach Spalte A und B sortieren

2. kopiere dir Spalte A und Spalte B nach Spalte E und F (also neben die Originaldaten mit einer Spalte Abstand)

3. füge in die Spalte G ab Zeile 2 bis Datenende diese Formel ein: =Zeile()
4. füge in die Spalte H ab Zeile 2 bis Datenende diese Formel ein: =Wenn(A1&B1=A2&B2;H2;G1)
5. Spalte G:H kopieren und an gleicher Stelle als Wert einfügen
6. mit den Spalten E:H das Duplikate-Entfernen ausführen, Kriterien sind Spalte E und F

7. in die Spalte I ab Zeile 1 bis Datenende diese Formel: =MTRANS(Index(C:C;G1):Index(C:C;F1))

8. das ganze kopieren, als Wert einfügen und dann die nicht mehr benötigten Spalten löschen.

das sollte zügig und funktionieren und sich auch als Makro gut funktionieren.

Anzeige
AW: Text zu lang
27.08.2024 17:38:38
daniel
korrektur für 7.

=MTRANS(Index(C:C;G1):Index(C:C;H1))

Gruß Daniel
AW: Text zu lang
27.08.2024 17:45:21
Christian
Hallo Daniel,

Punkt 4 gibt nen Zirkelbezug, weil ich eine Formel in H2 einfügen soll, in der H2 steht

Gruß
Christian
AW: Text zu lang
27.08.2024 19:22:45
Christian
auf jeden Fall dein Formelvorschlag funktioniert, soweit ich es beurteilen kann, habe natürlich nicht alle 74000 noch übrig gebliebenen Zeilen überprüft. Danke
Anzeige
AW: Text zu lang
27.08.2024 18:02:28
daniel
die Formel ist für Zeile 1
hab mich da vertippt, war mit nicht ganz klar, ob du da mit oder ohne Überschriften arbeitest.
die Formel soll praktisch die untere Zeilennummer eines Blocks nach oben in die erste Zeile des Blocks ziehen, damit Anfangs- und Endzeile eines Blocks in einer Zeile stehen.
Anzeige
AW: Text zu lang
27.08.2024 18:04:15
Christian
ok, aber mal eine andere Frage, wo du das Thema Makro bereits angesprochen hast, wäre hier eine VBA Lösung nicht praktikabler?

Christian
AW: Text zu lang
27.08.2024 18:55:50
daniel
ja schon.
aber wenn ich eine Lösung habe, die als Mix aus Formeln und manuellen Aktionen gut funktioniert, dann ist es häufig am einfachsten, diesen Weg per Makro nachzuprogrammieren.

ich mache das oft so, dass ich mir bei solchen Bearbeitungen erst mal überlege, wie geht es von Hand am besten und mit dem geringsten Rechenaufwand, und das programmiere ich mir dann als Makro.
hat einfach den Vorteil, dass man erstmal manuell ausprobieren kann, was man machen will und gleich sieht, ob es auch funktioniert, und man bekommt mit wenig Programmieraufwand und geringen Programmierwissen /-erfahrung (der Recorder ist dein Freund) leistungsfähige Makros.
um sowas rein auf VBA-Ebene so zu lösen, dass es auch noch schneller ist, müsste man schon tiefer in die Trickkiste greifen.

Gruß Daniel
Anzeige
da gebe ich dir recht owT
27.08.2024 19:23:44
Christian
.
und keine Überschriften owT
27.08.2024 18:05:42
Christian
AW: Text zu lang
27.08.2024 13:02:31
Christian
Hallo Daniel,

genau diese 32767 Zeichen sind ja mein Problem, dass es auf meinem bisherigen Weg nicht funktioniert.
Im Moment läuft noch ein Makro.

Wenn das durchgelaufen ist, teste ich deine Formel und melde mich dann wieder.

Danke
Christian
Anzeige
AW: Text zu lang
27.08.2024 13:42:13
daniel
hier noch ne Formelvariante, die wenig Rechenzeit benötigt.
Allerdings musst du diese Formeln nicht nur nach unten, sondern auch nach rechts ziehen, soweit wie benötigt und das musst du ermitteln.

=wenn($A1&$B1=$A2&$B2;"";Wenn(Index($A:$A;Zeile()+Spalte(A1)-1)&Index($B:$B;Zeile()+Spalte(A1)-1)=$A2&$B2;Index($C:$C;Zeile()+Spalte(A1)-1);""))

Gruß Daniel
Anzeige
AW: Text zu lang
27.08.2024 13:52:38
Christian
Hallo Daniel,

naja wie weit nach rechts lässt sich ja mit ner ZÄHLENWENN und ner ADRESSE Formel recht einfach ermitteln, werde ich dann ebenfalls testen, wenn es soweit ist.

Gruß
Christian
AW: Text zu lang
27.08.2024 13:59:04
daniel
HI
die maximale Anzahl an Spalten kannst du in einer Formel so zählen:

=LET(x;EINDEUTIG(A:B);MAX(ZÄHLENWENNS(A:A;SPALTENWAHL(x;1);B:B;SPALTENWAHL(x;2))))

Gruß Daniel
Anzeige
Mtrans...
27.08.2024 15:58:37
Christian
führt zu einem Überlauf... teste dann mal das andere. Muss aber die Zählenwenn nehmen, die Let Formel rechnet sich bei knapp 300Tsd Zeilen tot.
AW: Mtrans...
27.08.2024 16:10:44
Christian
die andere Formel rechnet und rechnet, die Formel muss jetzt im Endeffekt in 200*294.327 also 58.865.400 Zellen berechnet werden. Kann also noch was dauern
AW: Mtrans...
27.08.2024 16:31:06
daniel
bei 300.000 Zeilen würde ich das so machen:
in einer freien Spalte (bspw Spalte X) ab Zeile 2 bis Ende:
=Wenn(A1&B1=A2&B2;X2+1;1)

und dann einfach diese Spalte X mit MAX auswerten.
vorher natürlich nach Spalte A und B sortieren, falls nicht schon geschehen.
Gruß Daniel
Anzeige
AW: Mtrans...
27.08.2024 16:35:01
daniel
Überlauf heißt, dass die Zellen in die die Funktion ihr Ergebnis schreiben will, nicht leer sind.
du musst vor oder neben so einer Formel genügend Leerzellen haben.

LET ist keine eigenständige Funktion, sondern deutet nur an, dass man hier mit Variablen arbeiten will.
mit "die LET-Funktion" ist eine Funktion nicht beschrieben.
Anzeige
nicht genügend RAM owT
27.08.2024 16:13:54
Christian
.
;

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