Hi Leute,
ich bin ja wieder mal begeistert, mit welchem Elan ihr Euch beteiligt habt! Respekt!
Wie ihr seht, gibt es (wie für fast alle Aufgaben) mehrere Lösungen. Rainer und Silvan haben z.B. mit der Funktion INDIREKT gearbeitet, um die notwendigen Zellbezüge "zusammenzubasteln", Melanie, Thomas und ich wiederum mit BEREICH.VERSCHIEBEN.
Alle Lösungen zu erläutern wäre dann doch ein wenig viel, aber für alle, die es interessiert, hier noch der Lösungsweg der letztlich mit 255 Zeichen kürzesten Variante.
Vorab nochmals die Aufgabenstellung:
| | A | B | C | D | E | F | G | H | 1 | Preis pro Einheit | Aldi | Lidl | Penny | Plus | | | | 2 | Äpfel | 1,29 | 1,39 | 1,39 | 1,49 | | | | 3 | Birnen | 1,33 | 0,99 | 1,09 | 2,09 | | | | 4 | Erdbeeren | 3,6 | 2,99 | 2,79 | 2,89 | | | | 5 | Nüsse | 1,55 | 1,44 | 1,69 | 1,39 | | | | 6 | Bananen | 2,29 | 2,39 | 2,49 | 2,32 | | | | 7 | Weintrauben | 4,49 | 3,99 | 4,99 | 3,89 | | | | 8 | | | | | | | | | 9 | | | | | | | | | 10 | | | | | | | | | 11 | Gesucht ist | Erdbeeren | Der preisgünstigste Supermarkt für Erdbeeren ist Penny mit 2,79 Euro |
---|
12 | der günstigste | Nüsse | Der preisgünstigste Supermarkt für Nüsse ist Plus mit 1,39 Euro |
---|
13 | Preis UND | Weintrauben | Der preisgünstigste Supermarkt für Weintrauben ist Plus mit 3,89 Euro |
---|
14 | Supermarkt | Bananen | Der preisgünstigste Supermarkt für Bananen ist Aldi mit 2,29 Euro |
---|
15 | für: | Äpfel | Der preisgünstigste Supermarkt für Äpfel ist Aldi mit 1,29 Euro |
---|
16 | | Birnen | Der preisgünstigste Supermarkt für Birnen ist Lidl mit 0,99 Euro |
---|
Formeln der Tabelle | C11 : ="Der preisgünstigste Supermarkt für "&B11&" ist "&INDEX($1:$1;VERGLEICH(MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;)-1;;;5));BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5);))&" mit "&MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;)-1;;;5))&" Euro"
|
Bedingte Formatierungen der Tabelle | Zelle | Nr.: / Bedingung | Format | B2 | 1. / Zellwert ist gleich =MIN($B2:$E2) | Abc |
|
|
Excel Tabellen einfach im Web darstellen Excel Jeanie HTML 2.0 Download
Die Überlegung ist ja eigentlich ganz einfach:
Wie komme ich an die richtigen Koordinaten aus der Matrix A1:E7?
Der Weg zur Lösung besteht aus mehreren einzelnen Überlegungen:
1.)
Wie komme ich an DIE Zeile mit dem gesuchten Obst?
2.)
Wenn ich die Zeile dann ermittelt habe: Welches ist der niedrigste Preis aus eben dieser Zeile?
3.)
Zu welchem Supermarkt gehört der mit 1.) und 2.) ermittelte niedrigste Preis?
Zu 1.)
Die gesuchte Zeile ermittelt man am besten mit der Funktion BEREICH.VERSCHIEBEN. Diese ist nach folgender Syntax aufgebaut:
=BEREICH.VERSCHIEBEN(Bezug;Zeilen;Spalten;Höhe;Breite)
Also ausgehend von einem festen Bezugspunkt wird ein "verschobener" neuer Bereich ermittelt:
+/- x Zeilen
+/- x Spalten
Die Höhe (in Zeilen) des neuen Bereiches
Die Bereite (in Spalten) des neuen Bereiches
Als Bezug bietet sich A1 ein.
Ausgehend von diesem Bezug:
a) Wieviele Zeilen RUNTER muss ich denn gehen, um auf das gesuchte Obst zu stoßen?
b) Um wieviele Spalten muss ich den neuen Bezug "versetzen"? Antwort in unserem Beispiel einfach: NULL
c) Wie hoch muss der neue Bereich sein? Antwort auch hier ganz einfach: EINS - also eine Zeile "hoch"
d) Wie breit muss der neue Bereich sein? Auch schnell ermittelt: 5 Spalten (A bis E)
Also sieht das Wunschergebnis für z.B. "Erdbeeren" so aus:
=BEREICH.VERSCHIEBEN(A$1;3;0;1;5)
Also ausgehend von A1:
3 Zeilen runter (=A4), 0 Spalten nach rechts, Höhe: 1 Zeile und 5 Spalten breit - im Ergebnis also: A4:E4
Da die Standardbelegungen für "Spalten" Null und für "Höhe" 1 ist, kann man diese Angaben auch weglassen - also einfach nur das Semikolon stehen lassen:
=BEREICH.VERSCHIEBEN(A$1;3;;;5)
Der Knackpunkt ist hierbei aber: Wie ermittel ich die 3? Also wieviele Zeilen RUNTER muss ich denn gehen?
Hier kommt die erste Funktionsverschachtelung ins Spiel: Die Funktion VERGLEICH wird benötigt.
Mit
=VERGLEICH(B11;A:A;0)
ermittelt man, an wievielter Stelle der Spalte A der Begriff aus B11 steht. Der Rückgabewert ist also eine Zahl zwischen 1 und 65536. Am Beispiel "Erdbeeren" ist das Ergebnis also 4, denn "Erdbeeren" steht in A4 - und das ist die 4. Stelle der Suchspalte A:A (A1, A2, A3, A4 = 4. Stelle).
Da wir aber vom Bezugspunkt A1 ausgehen und ja nur 3 Zeilen runter müssen, subtrahieren wir also noch 1:
=VERGLEICH(B11;A:A;0)-1 - ergibt im Ergebnis 4-1=3
Eingebaut in die Funktion BEREICH.VERSCHIEBEN ergibt das dann:
=BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5)
Somit ist es jetzt egal, welcher Wert in B11 steht - die richtige Zeile wird durch die Verschachtelung mit VERGLEICH immer gefunden.
zu 2.)
Da wir jetzt die Zeile ermittelt haben: Welches ist daraus der niedrigste Preis?
Das ist mit der bisherigen Antwort zu 1.) schnell erklärt:
Mit
=BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5)
haben wird ja die Zeile rausgefunden - für Erdbeeren ist es Zeile 4 - genauer der Bereich A4:E4.
Diese verschachtelte Funktion kann man jetzt einfach in die Funktion MIN einbauen:
=MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5)) - heisst "übersetzt" also: =MIN(A4:E4)
und das Ergebnis für Erdbeeren ist 2,79.
Das funktioniert so, weil die Funktion MIN Texte einfach ignoriert (denn in A4 steht ja ein Text). Also haben wir bis hier eine 3-fache Funktionsverschachtelung - landläufig auch als "Formel" bezeichnet .
zu 3.)
Bis hierher haben wir also sowohl die Zeile als auch das Minimum aus der Zeile ermittelt. Jetzt ergibt sich noch die Frage: Wie komme ich an den entsprechenden Supermarkt? Also: An wievielter Stelle in der entsprechenden Zeile steht denn das Minimum?
Also setzten wir wieder auf die bereits bekannte Funktion VERGLEICH, die ja nach dieser Syntax funktioniert:
=VERGLEICH(Suchkriterium;Suchmatrix;Vergleichstyp)
Die Suchmatrix für den VERGLEICH haben wir mit 1.) bereits ermittelt:
=BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5) - Ergebnis für die "Erdbeeren": A4:E4
Das Suchkriterium (=den niedrigsten Preis) kennen wir jetzt auch mit unseren Überlegungen zu 2.):
=MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5)) - für die "Erdbeeren" 2,79
Na ja - den Vergleichstyp sezten wir auf Null und verschachteln einfach alle Funktionen:
Suchkriterium: MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5)) = 2,79
Suchmatrix: BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5) =A4:E4
Vergleichstyp: 0
Das sieht dann so aus:
=VERGLEICH(MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5));BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5);0)
"Übersetzt" heisst es dadurch (für die Erdbeeren) also:
=VERGLEICH(2,79;A4:E4;0)
Das Ergebnis in diesem Beispiel ist 4 - also die 4. Stelle von A4:E4 (=D4) (A4, B4, C4, D4 = 4. Stelle) - denn dort steht "2,79"
Und was machen wir jetzt mit dieser Zahl? Logisch - an 4. Stelle der Zeile 1 muss jetzt also der gesuchte Supermarkt stehen.
Und wie lesen wir diesen Wert jetzt aus? Indem wir von der 1. Zeile einen INDEX bilden, um daraus den 4. Wert auszulesen. Dies geschieht mit:
=INDEX($1:$1;4)
Und für die 4 setzen wir obige Funktionsverschachtelung ein:
=INDEX($1:$1;VERGLEICH(MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5));BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5);0))
so dass wir es jetzt bereits mit einer "Multi-Funktionsverschachtelung" zu tun haben
Im Ergebnis erhalten wir dadurch den gesuchten Supermarkt: - nämlich am Beispiel der "Erdbeeren" den Penny-Markt.
Und schließlich und endlich packen wir alles in EINE Formel mit:
="der preisgünstigste Supermarkt für "&B11&" ist "&INDEX($1:$1;VERGLEICH(MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5));BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5);0))&" mit "&MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A;0)-1;;;5))&" Euro"
Und diese ist genau (mit dem "="-Zeichen) 258 Zeichen lang und verkürzt sich nochmals um 3 auf 255 Zeichen, wenn man den Vergleichsparameter "0" in den 3 vorhandenen VERGLEICH-Funktionen weglässt - also nur das Semikolon schreibt (denn Null ist die Voreinstellung, wenn das Semikolon vorhanden ist):
="der preisgünstigste Supermarkt für "&B11&" ist "&INDEX($1:$1;VERGLEICH(MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A; )-1;;;5));BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A; )-1;;;5);0))&" mit "&MIN(BEREICH.VERSCHIEBEN(A$1;VERGLEICH(B11;A:A; )-1;;;5))&" Euro"
wobei ich zur Darstellung hier im Forum zwischen ; und ) ein Leerzeichen setzen musste, da es sonst zu einem wird...
Und durch den richtigen Einsatz der relativen und absoluten Bezüge lässt sich diese Formel auch problemlos runterkopieren.
Um die Zusatzfrage mit der bedingten Formatierung auch noch aufzulösen:
Bereich B2:E4 markieren, so dass B2 die aktive Zelle ist.
Dann Format -> bedingte Formatierung -> Zellwert "ist gleich": =MIN($B2:$E2)
und die schöne Hintergrundfarbe "grün" zuweisen - fertig
Und zu guter Letzt beglückwünsche ich alle, die bis hier her überhaupt gelesen haben
Viele Grüße
Boris
|