Verkettung von Array-Zellen

Bild

Betrifft: Verkettung von Array-Zellen
von: Barbara
Geschrieben am: 07.10.2015 14:01:02

Hallo,
ich würde gerne mittels Formel die Strings der Zellen A1 bis H1 verbinden,
aber nicht aller Zellen, sondern nur jener Zellen, die darunter ein "Ja" stehen haben.
Dachte, es geht mit
={VERKETTEN(WENN(A2:C2="Ja";A$1:C$1;""))}
(als Array-Formel, also mit Strg+Shft+Eingabe abzuschließen)
tut es aber nicht.
Warum aber?
Gibt es eine andere Lösung dafür?
LG,
Barbara

Bild

Betrifft: AW: Verkettung von Array-Zellen
von: Daniel
Geschrieben am: 07.10.2015 14:25:15
Hallo
das Arbeiten mit Texten wird in Excel nur sehr rudimentär unterstützt, dh mit den Standard-Excelformen geht das nicht
du müsstest also jede Zelle einzeln betrachten:

=Wenn(A2="Ja";A1;"")&wenn(B2="Ja";B1)&wenn(C2="ja";C1)&...&Wenn(H2="ja";H1;"")
oder in einer Hilfszeile die Werte aufaggregieren, hierzu folgende Formel in A3:
=Wenn(A2="ja";A1;"")&B3

diese Formel ziehst du dann bis H3. der vollständige Wert ist in A3.
die nächste Alternative wäre, dass du dir per VBA entsprechende Formeln selber programmierst (oder entsprechende Makros aus dem Internet übernimmst)
Gruß Daniel

Bild

Betrifft: AW: Verkettung von Array-Zellen
von: Barbara
Geschrieben am: 07.10.2015 17:39:42
na, wenns nicht besser geht ...
Dennoch danke, Daniel.
Aber vielleicht hat noch jemand eine Idee dazu.
LG,
Barbara

Bild

Betrifft: AW: Verkettung von Array-Zellen
von: firmus
Geschrieben am: 07.10.2015 18:11:37
Hi Barbara,
mit Hilfszeile geht das.
Annahme:
in Zeile "1" sind die Werte
in Zeile "2" sind die "JA" oder leer
in Zeile "3" ist die Hilfszeile
Funktion:
In A3 bis max. XFC3 steht die Formel '=WENN(A2="ja";A1;"")' Spalte anpassen B, C, .......
In XFD3 kannst Du dann ALLE Zellen einer Zeile verbinden. in Zelle XFD3: '=A3&B3&C3&........&XFC3'
Die leeren Zellen in Zeile "3" werden einfach ignoriert.
Lass wissen ob es klappt.
Gruß
Firmus

Bild

Betrifft: Neben dieser klassischen Lösung (Daniel), ...
von: Luc:-?
Geschrieben am: 07.10.2015 18:52:51
…Firmus' Lösung ist eine Variante davon, Barbara,
gibt's noch die eigentlich nicht für den Dauerbetrieb (weil u.U. instabil) ausgelegte Iterationslösung, zB so:
Steuerzelle I1:=WENN(I1<8;I1+1;I1)
Ergebniszelle I2:=GLÄTTEN(WENN(I1=0;"";WENN(LINKS(I2)="0";"";I2&" "&WENN(INDEX(A2:H2;I1)="ja";INDEX(A1:H1;I1);""))))
Dafür muss Iteration zugelassen und (hier!) auf 8 (MaxAnzahl der betrof­fenen Zellen) einge­stellt wdn.
Ich würde allerdings eine der vielen VBA-Lösungen (auch hier im Archiv!) auf Basis der vbFkt Join verwenden, bevorzugt natürlich meine eigene UDF VJoin, weil die auch ein hier wg der Zusatz­bedingung erforder­liches Daten­feld verar­beiten kann (VBA-Modul mit UDF-Pgm erforderlich!):
{=VJoin(WENN(A2:H2="ja";A1:H1;"");;-1)}
Damit das Datenfeld im 1.Argument vollständig aufgebaut wird, ist hier die Matrix­Formel­Form erforderlich! Nebenbei, die UDF kommt auch mit größeren Datenmengen zurecht (Test: mind 890 Werte aus insgesamt mehr als 3,5 Tsd Werten).
Es könnte auch noch eine 4.Möglichkeit geben (aber in Xl nicht ohne VBA!) → über verbundene Zellen. In LO/OOcalc kann man beim Verbinden von Zellen alle Inhalte derselben (verbunden) in die 1.Zelle des Verbunds transferieren. Wenn man das Ergebnis direkt kopiert bzw die Kopie als Wert in eine leere Zelle einfügt, müsste das klappen. Bei Aufheben des Zell­Verbunds wird in dieser Software nämlich (im Ggsatz zu Xl) der Ursprungs­zustand wieder­her­gestellt (in Xl wird nur der Zell­Verbund aufgelöst), wahr­scheinich auch bei dieser Option. Hier im Archiv ist auch ein VBA-Pgm zu finden, das diese Verhaltensweise in Xl simuliert (allerdings nur für senkrecht angeordnete Zellen!). Dabei wird xl-üblich das Ergebnis auch nach Lösen des Verbunds beibehalten.
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: AW: Neben dieser klassischen Lösung (Daniel), ...
von: Barbara
Geschrieben am: 08.10.2015 21:27:08
Mit der Hilfszeile klappt es natürlich.
VBA ist nicht zugelassen hier im konkreten Fall.
Danke für Eure Hilfe.
:)

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Wenn Zelle leer, dann Formel einfügen"