Rückgabe des maximalen Werts bei mehreren Treffern aus einem String
#1
Hallo zusammen,

ich möchte eine neue Spalte (unten "Ausgabezeile") in einer Tabelle erzeugen, welche anhand eines Kriteriums eine andere Spalte durchsucht, in dieser Spalte mehrere Treffer finden kann, aber nur der maximale Wert der dazugehörigen dritten Spalte (gleiche Zeile) soll zurückgegeben werden. Das Kriterium ist jedoch ein nicht klar abgegrenzter String (unten "Referenz"). Ich möchte diese Spalte mit dem uneindeutigen String jedoch nicht aufspalten, da es keine klare Form gibt und u. U. zig Spalten erzeugen würde. 

Zur Tabelle (vereinfacht):

[
Bild bitte so als Datei hochladen: Klick mich!
]

In der Tabelle sind Produkte mit Ihrer jeweiligen Produktnummern in Spalte A. Spalte B gibt an, dass der Preis des jeweiligen Produkts mit dem Preis der Referenzprodukte übereinstimmen muss. Die Spalte "Referenz" kann leer sein, eine, zwei 10 etc. Referenznummern enthalten. Der Referenzpreis soll der Maximalpreis jeweiligen Referenzprodukte in der Tabelle sein.

Beispiel:

Der Preis für Produkt 8374B aus Zeile 1 soll das Maximum aus folgenden Optionen sein:
1. sein eigener Preis (hier 12 €)
2. Preis des Produktes 2948C (hier 18 €)
3. Preis des Produkte 6566H (hier n. a.)

--> die Ausgabezeile sollte also in Zeile 1 und Zeile 2 "18 €" beinhalten, da der maximale Preis aus den Optionen "18 €" beträgt.

Das Maximum aus den Zeilen kann ich anscheinend mittels einer Array-Funktion und "Max(wenn(..." lösen. Allerdings weiß ich nicht, wie ich darin die uneindeutige Stringspalte "Referenz" unterbringe.

Habt Ihr eine Idee?

Beste Grüße
Thomas


Angehängte Dateien Thumbnail(s)
   

.xlsx   Referenzpreise.xlsx (Größe: 8,73 KB / Downloads: 5)
Antworten Top
#2
Mahlzeit Thomas

Code:
=MAX(XVERWEIS(XMLFILTERN("<y><z>"&WECHSELN(WECHSELN(A2&B2;"wie";",");",";"</z><z>")&"</z></y>";"//z");$A$2:$A$6;$C$2:$C$6;""))
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • t_guet01
Antworten Top
#3
(23.07.2021, 16:47)shift-del schrieb: Mahlzeit Thomas

Code:
=MAX(XVERWEIS(XMLFILTERN("<y><z>"&WECHSELN(WECHSELN(A2&B2;"wie";",");",";"</z><z>")&"</z></y>";"//z");$A$2:$A$6;$C$2:$C$6;""))

Hallo shift-del,

sorry für die Verspätung - Urlaub.

Klasse, das funktioniert ganz einwandfrei; vielen Dank. Die MAX und XVERWEIS Funktion als Rahmen verstehe ich.

Kannst Du mir erklären, was XMLFiltern und Wechseln in der Funktion machen? Reine Interessensfrage, um mich weiterzubilden. Du hast mir schon super geholfen.

Beste Grüße
Thomas
Antworten Top
#4
Dann trage mal diesen Teil der Formel in eine eigene Zelle ein.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#5
F9 ist mir bekannt, jedoch verschachtelt Deine Funktion XML-Filtern und Wechseln. Dass damit das Argument für den XVerweis erzeugt wird, ist mir klar. Nur hilft mir das Ergebnis ohne Lösungsweg nicht weiter. Mir fehlt es an einem sprachlichen Verständnis für die RegEx. Durch Wechseln werden "wie" und "," ersetzt, und dann? Kommen viele lustige <> mit /z irgendwas.

Egal, Danke Dir trotzdem.
Antworten Top
#6
Da sind keine RegEx. Das ist XML-Struktur. x, y, z sind beliebige Bezeichner. Du kannst auch Kuh, Milch und Wurst daraus machen.
Mit dieser Struktur splittet XMLFILTERN() die Daten anhand eines Trennzeichens.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#7
Für Thread-Leser:

https://www.youtube.com/watch?v=kDoaWCZ4VBM&ab_channel=ExcelIsFun

Hiermit hatte ich's dann.
Antworten Top


Gehe zu:


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