Microsoft Excel

Herbers Excel/VBA-Archiv

Rekodieren mit vielen Bedingungen

Betrifft: Rekodieren mit vielen Bedingungen von: Alex
Geschrieben am: 31.10.2014 13:12:29

Hallo,
nach 6 Stunden Trial und Error gebe ich mich geschlagen und bitte um Tipps für folgende Herausforderung:
Ziel ist es Preise nach bestimmten Bedingungen in zwei Spalten zu trennen. Anbei die exemplarische Struktur der Daten:
https://www.herber.de/bbs/user/93475.xlsx
Für jeden Kunden (A:A) soll der Preis (E:E) für die ersten drei Einkäufe (B:B <= 3) in Spalte Preis1 (F:F) kopiert werden, wenn die Wahl ("1" in D:D) beim ersten Einkauf (B:B = 1) auf Art "1" (in C:C) fiel. Falls Art "2" gewählt wurde soll in Preis2 (G:G) kopiert werden.
Für die restlichen Einkäufe (B:B > 3)gilt:
Wenn Art = 1, dann Preis in Preis1 & Wenn Art = 2, dann Preis in Preis2 & Wenn Art = 0, dann Preis1 = 0 und Preis2 = 0.

Das Problem für mich ist also, dass für eine Reihe von Einkäufen etwas in Abhängigkeit eines bestimmten Einkaufs (hier: des ersten) - also einer anderen Zeile - gilt und für die anderen Einkäufe die Regel nur von dem Inhalt der eigenen Zeile abhängt. Im Grunde klingt es auch für mich nicht unmöglich aber ich scheitere bei der Abprüfung von unterschiedlichen Kriterien bei tendenziell unterschiedlichen Arrays für jeden Kunden, und dass diese Abprüfung gleichermaßen für eine bestimmte Spanne funktionieren muss.

Ich freue mich über jedwede Hinweise für die Annäherung oder Lösung des Problems!
Vielen Dank und beste Grüße,
Alex

  

Betrifft: AW: Rekodieren mit vielen Bedingungen von: Christian
Geschrieben am: 31.10.2014 18:49:18

hallo Alex,
eine Variante mit Summenprodukt:
in F2 die Formel:
=WENN((SUMMENPRODUKT((A$2:A$21=A2)*(B$2:B$21=1)*(C$2:C$21=1)*(D$2:D$21=1))=1)*(B2<4)+((B2>3)*(C2=1)); E2;0)

in G2 die Formel:
=WENN((SUMMENPRODUKT((A$2:A$21=A2)*(B$2:B$21=1)*(C$2:C$21=2)*(D$2:D$21=1))=1)*(B2<4)+((B2>3)*(C2=2)); E2;0)

Formeln jeweils nach unten ziehen.
Kommst du damit klar?

Gruß
Christian


  

Betrifft: Wenn die Kombination ... von: Christian
Geschrieben am: 31.10.2014 19:13:03

... "ersten Einkauf" und "Wahl=1" und "Art=1" pro Kunde auch mehr als einmal vorkommen kann, dann lass beim Summenprodukt die Prüfung auf "1" weg.
Des Weiteren kann man auch noch auf ein paar Klammern verzichten, die habe ich nur zum besseren Verständnis gesetzt.

Bsp für F2 (für G2 analog):
=WENN(SUMMENPRODUKT((A$2:A$21=A2)*(B$2:B$21=1)*(C$2:C$21=1)*(D$2:D$21=1))*(B2<4)+(B2>3)*(C2=1);E2;0)

Gruß
Christian


  

Betrifft: Rekodieren mit vielen Bedingungen von: alex.wendland@gmail.com
Geschrieben am: 04.11.2014 10:13:52

Hallo Christian,
Sorry, dass ich jetzt erst reagiere. Ich hatte erwartet, dass ich ne Email bekomme, wenn Antworten gegeben werden. Umso mehr freue ich mich deine Antwort vorzufinden! :)
Die Formel funktioniert und ich konnte sie auf meine Originaldaten anpassen. Insofern schonmal Danke!
Eine Frage habe ich dazu noch:
SUMMENPRODUKT((A$2:A$21=A2)*(B$2:B$21=1)*(C$2:C$21=2)*(D$2:D$21=1))=1
Was wird denn da multipliziert, dass da eine "1" rauskommt? War mir nicht bewusst, dass SUMMENPRODUKT in einem Wahrheitswert resultieren kann, oder was passiert da?
LG und Danke!
Alex


  

Betrifft: AW: Rekodieren mit vielen Bedingungen von: Christian
Geschrieben am: 04.11.2014 13:30:31

hallo Alex,
die einzelnen Faktoren wie zB.(A$2:A$21=A2) ergeben ein Array mit WAHR und FALSCH.

zB.(A$2:A$21=A2)
{WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;WAHR;FALSCH;FALSCH;
FALSCH;FALSCH;FALSCH;FALSCH;FALSCH;FALSCH;FALSCH;FALSCH}

ebenso für (B$2:B$21=1), etc.
Jetzt multiplizierst du zeilenweise, wobei nur
WAHR * WAHR * WAHR * WAHR = 1 ergibt. Sobald ein Faktor FALSCH ist ist das Produkt = 0.
und nimmst anschließend die Summe der Ergebnisse aus der obigen Multiplikation. Wenn das Gesamtergebnis = 1 ist, dann kommt WAHR * WAHR * WAHR * WAHR genau einmal vor.

Gruß
Christian


 

Beiträge aus den Excel-Beispielen zum Thema "Rekodieren mit vielen Bedingungen"