Excel: Durch Kommas getrennte Werte dynamisch extrahieren und einen hinzugefügten Wert aus einer separaten Liste zurückgeben

Excel: Durch Kommas getrennte Werte dynamisch extrahieren und einen hinzugefügten Wert aus einer separaten Liste zurückgeben

Ich habe eine Situation, in der ein Benutzer eine durch Kommas getrennte Zahlenfolge eingibt und eine separate Liste mit Nachschlagekosten ausfüllt. Sobald der Benutzer die Werte eingegeben hat, gibt eine separate Zelle den Gesamtwert zurück, der ungefähr wie folgt aussieht:

[Benutzereingabewerte][Zurückgegebener Wert der zusätzlichen Kosten]

Kosten-Lookup-Zellen

  1. 100 US-Dollar
  2. 200 $
  3. 300 $
  4. 400 $ usw.

Ein Beispiel für eine Benutzereingabe könnte sein: [1, 4 ], was [$500] zurückgeben sollte.

Ich komme derzeit nicht weiter und muss eine undefinierte Anzahl von Kommas lesen. Es könnte keine Eingabe ohne Kommas geben, die $0 zurückgeben sollte, oder es könnten 200 verschiedene Werte sein, die durch Kommas (oder Komma und Leerzeichen wie im obigen Beispiel) getrennt sind.

Meine Überlegung war, die durch Kommas getrennten Werte zu nehmen und jede Zahl in eine neue Zelle aufzuteilen, dann eine SVERWEIS-Funktion zu verwenden, um den Kostenbetrag zu ermitteln und alles zu addieren, um einen Rückgabewert zu erhalten. Das würde alles funktionierenWennIch kann eine Formel erhalten, um eine unbestimmte Anzahl von durch Kommas getrennten Werten auszugeben. So etwas wie:

Bildbeschreibung hier eingeben

Ist das überhaupt mit Formeln möglich? Der Benutzer sollte nichts weiter tun müssen, als die Nachschlagezellen auszufüllen und die benötigten Zahlen einzugeben.

Antwort1

Diese Array-Formel funktioniert mit Zahlen für CO# WENN-Zeichenfolgen. Anschließend müssen Sie sie --in der Formel entfernen.

Tragen Sie dies in D2 ein:

=IF(LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+1>=ROW($A1),INDEX(A:A,MATCH(--TRIM(MID(SUBSTITUTE($E$1,",",REPT( " ",99)),(ROW($A1)-1)*99+1,99)),$A:$A,0)),IF(ROW($A1)=LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+2,IF(COLUMN(A$1) = 1, "$",SUM(INDEX($B:$B,MATCH(N(IF(1,--TRIM(MID(SUBSTITUTE($E$1,",",REPT( " ",99)),(ROW(INDEX($AAB:$AAB,1):INDEX($AAB:$AAB,LEN($E$1)-LEN(SUBSTITUTE($E$1,",",""))+1))-1)*99+1,99)))),$A:$A,0)))),""))

Bestätigen Sie mit Strg-Umschalt-Eingabe statt mit der Eingabetaste. Kopieren Sie dann eine Spalte weiter und so weit nach unten, dass alle benötigten Zeilen abgedeckt sind.

Je nachdem, wo in der Liste es sich befindet, werden die Zeichenfolgen durch die verschiedenen IF-Anweisungen aufgeteilt und ein oder alle Teile an MATCH zurückgegeben, das wiederum alle oder einen der relativen Standorte an INDEX zurückgibt. Dann werden entweder alle Teile zusammengefasst oder der korrekte Einzelwert zurückgegeben.

Die Größe wird automatisch nach Bedarf angepasst.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

verwandte Informationen