komma-separierten Wert nutzen, um mehrere Verweise zu erzeugen
#1
[Bild: attachment.php?aid=34332]

Ich habe in der Spalte-B eine Liste (optional, unbekannte Anzahl) mit Fremdschlüsseln (kommasepariert) stehen. Die Spalte-A beinhaltet den jeweiligen Primärschlüssel.
Nun möchte ich gerne Folgendes erreichen...

Sofern vorhanden, sollen ...
1.) die Fremdschlüssel (als Zahlen) aus der Spalte-B (Text mit Zahlen und Kommas) separiert werden, ...
2.) um die jeweiligen Zeilen durch die zuvor gesplitteten FIDs zu finden (vermutlich via [Verweis] mit Suche in Spalte-A) ...
3.) und schließlich aus allen gefunden Zeilen die Werte aus einer Spalte (bspw. Spalte-F) zu summieren.

Am Ende zwei Soll-Beispiele...
F2 => enthält das Ergebnis (97.37) aus 20.00 + 53.07 + 24.30 (also F4 + F6 + F7)
F3 => enthält das Ergebnis (107.37) aus 30.00 + 53.07 + 24.30 (also F5 + F6 + F7)

Perfekt wäre es, wenn alles (also das Separieren der Zahlen, sowie das Summieren der Werte aus Spalte-F aller gefundenen Zeilen) innerhalb einer einzigen Formel funktioniert.

Jemand eine Idee? Ich scheitere bereits am Separieren der Zahlen. Zwar gelang es mir mit LINKS(), TEIL() und RECHTS(), alles auszulesen, aber da ich ja nicht weiß wie viele Kommas existieren, fand ich keinen Weg "alle" Zahlen auszulesen. Ich denke auch daran scheitert es, denn hat man erstmal alle Zahlen, lassen sich simpel Verweise erzeugen und außenherum dann die Summierung.

Bin mal gespannt. :)


Angehängte Dateien Thumbnail(s)
   
Top
#2
Also den Verweis für den Bereich zwischen Position [1] und [(erstes Komma) - 1], der in Spalte-A sucht und den Wert aus Spalte-F.

Zitat:=SUMME(VERWEIS(TEIL(B2;1;FINDEN(",";B2)-1)+0);A:A;F:F); ... )


Ich habe eventuell noch die Idee, die Kommas zu zählen und wenn es nur 2 sind, wird der 3. Wertes einfach von RECHTS() ausgelesen und der 4. Wert ignoriert.
Kompliziert ist nur, dass ich jedes Mal die FINDEN()-Funktion einmal mehr in sich selbst verschachteln muss, wenn ich zum nächsten Komma springen möchte, da ich sonst immer nur die erste Position erhalte. Leider scheint Excel keinen Array-Parameter anzubieten. Sonst könnte man so etwas sagen wie: FINDEN(",";B2)[0/1/2/...]
Top
#3
Hallöchen,

im Prinzip so. Du müsstest dann Deine Formel mit der maximal möglichen Anzahl FID aufbauen. Für den Fall, dass weniger stehen, müsstest Du mit WENNFEHLER den Fehlerwert ausschließen, würde ab Überschreitung der Mindestzahl FID ausreichen.

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCD
13,5,63514
212,22,3333#BEZUG!67
NameBezug
ZIFFER=AUSWERTEN("{"&WECHSELN(Tabelle1!$A1;",";".")&"}")
ZelleFormel
B1=INDEX(ZIFFER;1)
C1=INDEX(ZIFFER;2)
D1=INDEX(ZIFFER;1)+INDEX(ZIFFER;2)+INDEX(ZIFFER;3)+WENNFEHLER(INDEX(ZIFFER;4);0)
C2=INDEX(ZIFFER;4)
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#4
Hallo,

bezugnehmend auf dein Beispiel, folgende Formel in F2

=SUMMENPRODUKT(ISTZAHL(FINDEN(","&INDEX($A:$A;ZEILE()+1):$A$9999&",";","&$B2&","))*INDEX($F:$F;ZEILE()+1):$F$9999)

Viele Grüße
Georg
[-] Folgende(r) 1 Nutzer sagt Danke an GeorgH für diesen Beitrag:
  • Froschkoenig84
Top
#5
(25.09.2020, 14:37)GeorgH schrieb: Hallo,

bezugnehmend auf dein Beispiel, folgende Formel in F2

=SUMMENPRODUKT(ISTZAHL(FINDEN(","&INDEX($A:$A;ZEILE()+1):$A$9999&",";","&$B2&","))*INDEX($F:$F;ZEILE()+1):$F$9999)

Viele Grüße
Georg

Besten Dank, das funktioniert super. :) Und viel einfacher (/kürzer) als mein Ansatz.
Spitze!!
Top


Gehe zu:


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