Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Performanceoptimierte Formel gesucht

Performanceoptimierte Formel gesucht
21.11.2018 11:09:32
Günther
Hallo,
ich suche eine bessere Formel, die mir einen Textstring berechnet, der alle Überschriften einer Liste mit Trennzeichen getrennt anführt, die in der jeweiligen Zeile gekennzeichnet sind.
Siehe auch angehängte Mini-Mappe zum besseren Verständnis.
https://www.herber.de/bbs/user/125543.xlsx
Meine exemplarische Formel für 3 Spalten lautet derzeit:
=TEIL(WENN(A2"";"/"&$A$1;"") & WENN(B2"";"/"&$B$1;"") & WENN(C2"";"/"&$C$1;"");2;100)
Bei einer höheren Spaltenanzahl ist das aber relativ mühsam und möglicherweise auch eher langsam.
Gibt es bessere Möglichkeiten (z.b. mit Matrix-Formeln o.ä.)?
Danke im Voraus für alle Tipps.
Grüße
Günther

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Performanceoptimierte Formel gesucht
21.11.2018 11:14:12
Herbert
Hallo Günther,
probier es doch mit VBA und einer "For - Next"-Schleife, in der du den String zusammensetzt?
Servus
AW: Performanceoptimierte Formel gesucht
21.11.2018 11:22:45
Günther
Hallo Herbert,
eine benutzerdefinierte VBA-Funktion dürfte erfahrungsgemäß ca. um den Faktor 10 langsamer sein.
Denkbar wäre eine Ereignis-Programmierung über das Change-Ereignis, die die Zielzelle mit dem Ergebnistext befüllt, sodass es gar keine Excel-Formel gibt.
Das wollte ich aber eigentlich eher vermeiden ...
Grüße Günther
Solche UDF gibt's schon, ...
21.11.2018 11:58:51
Luc:-?
…Günther (per singularer MatrixFml):
{=VJoin(WENN(A2:C2=""; "";A$1:C$1);"/";-1) }
Falls die Xl-Version doch von Relevanz wäre, könntest du evtl die UDF durch die neue Xl-Fkt TEXTVERKETTEN (TextJoin) ersetzen, falls die wirklich performanter ist.
Feedback nicht unerwünscht! Gruß, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Solche UDF gibt's schon, ...
22.11.2018 20:38:18
Günther
Hallo Luc,
Die VJoin-Funktion ist nicht uninteressant ;-) - Danke für die Beispielmappe!
Die Spielerei mit dem dritten Argument benötige ich eigentlich nicht.
Die Variante mit 1 scheint allerdings noch von der Reihenfolge der Texte abhängig zu sein ...
Bei der von mir benötigten Variante mit -2 kommen immer alle 97 Trennzeichen ... (hätte ich anpassen müssen)
Von der Performance her bin ich mir aber nicht sicher, dass das bei mir ausreichend schnell funktioniert hätte. Die Mappe wird insgesamt sehr groß - die VJoin-Formel bräuchte ich zig Tausend Mal jeweils über ca. 40 Spalten - und das per UDF mit einer For-Each-Schleife über jedes einzelne Matrixelement ...
Noch dazu als berechnete Spalte einer Liste, die häufig gefiltert wird - was üblicherweise bedeutet: jedes Mal filtern = Neuberechnung ALLER Zeilen
Ich habe es jetzt doch per Change-Ereignis umgesetzt, dann hat Excel nur einen Text ...
Danke nochmals für Deine Antwort!
Grüße Günther
Anzeige
SEHR viele Spaltenüberschriften verbinden
21.11.2018 11:49:48
WF
Hi,
da bildest Du am einfachsten eine Hilfs-Kopierreihe.
Schreib in Zelle Q2 (P2 ist leer):
=P2&WENN(A2="x";"/"&A$1;"")
bis Zelle Z2 kopieren und gesamt runter
das Ergebnis für Zeile 2 ist dann:
=TEIL(Z2;2;99)
WF
AW: SEHR viele Spaltenüberschriften verbinden
22.11.2018 20:44:30
Günther
Hi WF,
Danke für Deine Antwort.
Dein Vorschlag scheint mir eigentlich ident zu meiner Formel zu sein, außer dass Du die Formel halt auf viele Einzelzellen aufteilst, was zwar den (einmaligen) Erstellaufwand (deutlich) reduziert, aber insbesondere die Anzahl der Wenn-Funktionen unverändert lässt.
Ich habe es jetzt per Change-Ereignis ausprogrammiert - siehe auch meine andere Antwort.
Grüße Günther
Anzeige
AW: Performanceoptimierte Formel gesucht
21.11.2018 11:58:43
Daniel
Hi
je nach Excelversion und Bezahlmodell (Office 365-Abonnement) mit dieser Matrixformel
{=TextVerketten("/";Wahr;Wenn(A2:C2="x";A$1:C$1;""))}

(wobei ich das jetzt nicht getestet habe, weil ich auch noch nicht über die Funktion TEXTVERKETTEN verfügen)
wenn dein Excel noch nicht über diese Funktion verfügt, scheint mir der sinnvollste Weg zu sein, sie sich per UDF nachzuprogrammieren.
da auch bei vielen Spalten die Datenmenge überschaubar bleibt, solltest du kein Performanceproblem bekommen, auch wenn UDFs langsamer sind als originäre Excelfunktionen.
Ansonsten, wenn du kein 365-Abonnent bist und keine UDF schreiben willst, ggf mit einer Hilfstabelle nach diesem Schema
Es zwar viele Formeln, aber es ist immer die gleiche Formel in allen Zellen und die Formel ist kurz und benötigt wenig rechenleistung, daher sollte es kein Performanceproblem geben.
https://www.herber.de/bbs/user/125548.xlsx
gruß Daniel
Anzeige
3x kostenlos
21.11.2018 13:25:52
lupo1
Excel-Online
LibreOffice
Google Docs
AW: Performanceoptimierte Formel gesucht
22.11.2018 20:47:20
Günther
Hi Daniel,
dort, wo ich das brauche, steht mir die neue Funktion TextVerketten leider nicht zur Verfügung, sonst hätte ich es ausprobiert. Danke für Deinen Hinweis.
Ich habe es jetzt per Change-Ereignis ausprogrammiert - siehe auch meine andere Antwort.
Grüße Günther

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige