Suchlauf und Addition

Hallo

Seit Neuestem beschäftige ich mich mit Formeln und habe hier im Forum für mein Problem (noch) keine Lösung gefunden. Es geht um Folgendes:
In einer Tabelle mit mehreren Spalten steht in der B-Spalte ein Kurzzeichen (B, GV, Z, S...) in der D-Spalte steht der dazugehörige Preis in Euro. Ich habe zum Beispiel untereinander 5 Einträge in der B-Spalte (B, GV, Z, B, B). Jetzt soll mit dem Suchlauf zu jedem Kurzzeichen bzw. Kategorie die Gesamtsumme für diese Kategorie in einem extra Feld berechnet werden.
Wie muss die Formel dazu aussehen?

Gruß Jörg

Re: Suchlauf und Addition

#10405 On 5 Januar, 2012 18:04 Thomas Kaegi said,

Hallo Jörg

Genau dafür gibt es die Funktion "VSuchlauf". Die folgende Formel liefert den gewünschten Wert für das Kurzzeichen GV:

VSuchlauf(B:D;LfdZelle="GV";0;LfdResultat+Spaltenwert(3))

Allerdings ist das etwas riskant. Fügst du nämlich aus irgend einem Grund zwischen B und D noch eine weitere Spalte ein, so liefert die Formel nicht mehr den gewünschten Wert, weil die "3" (das Argument in der Funktion "Spaltenwert") nicht automatisch angepasst wird. Dieses Problem vermeidest du, wenn du statt der Spaltenwert-Funktion die Funktion "Index" verwendest:

VSuchlauf(B:B;LfdZelle="GV";0;LfdResultat+Index(D:D;LfdIndex))

Dabei muss der Suchbereich nur noch die Spalte mit den Kurzzeichen umfassen. Etwas eleganter wird es noch, wenn du die vorkommenden Kurzzeichen in einer Spalte untereinander schreibst. Ich nehme mal an, die Kurzzeichen stehen in Spalte G und gleich daneben in Spalte H die Formeln für die entsprechenden Summen. Wenn also in den Zellen G1:G... deine Kurzzeichen B, GV Z, S usw. stehen, so heisst die Formel in Zelle H1:

VSuchlauf(B:B;LfdZelle=G1;0;LfdResultat+Index(D:D;LfdIndex))

Diese Formel kannst du in Spalte H so weit nach unten kopieren, wie in Spalte G Kurzzeichen enthalten sind, so dass in Spalte H für jedes Kurzzeichen auf der gleichen Zeile die entsprechende Summe berechnet wird.

Verbal ausgedrückt macht obige Formel Folgendes:
Sie sucht in Spalte B (Suchbereich) die Zeilen, in denen das gesuchte Kurzzeichen steht (Bedingung: LfdZelle=Vergleichswert), und zählt dann immer zur bisherigen Summe (LfdResultat), beginnend mit dem Startwert 0, den Wert aus Spalte D auf der gleichen Zeile hinzu.

Gruss, Thomas

Re: Suchlauf und Addition

#10407 On 6 Januar, 2012 13:50 Schreddermaxe said,

Hallo Thomas

Die Formel funktioniert! In der Tat stehen die einzelnen Kurzzeichen einzeln untereinander, so dass ich nur die Formel etwas anpassen musste:

VSuchlauf(B6:B512;LfdZelle='GV';0;LfdResultat+Index(D6:D512;LfdIndex)) -> In B stehen die Kurzzeichen und in D der Preis.

Ein bisschen verwirrend für mich ist LfdIndex weil in dieser Spalte ein Preis steht und ein Index ist für mich etwas anderes als ein Zellenwert.

Danke für die schnelle Antwort!!!

Gruss Jörg

Re: Suchlauf und Addition

#10408 On 6 Januar, 2012 18:05 Thomas Kaegi said,

Hallo Jörg

Die Funktion "Index" entnimmt einem Tabellenbereich den Wert, der im angegebenen Bereich mit dem angegebenen Index gefunden wird. In diesem Fall ist der Bereich eine Spalte. Die Funktion "LfdIndex" bezieht sich auf den Suchlauf: bei jedem Suchschritt wird der LfdIndex um 1 erhöht, gibt also an, um den wievielten Schritt des Suchlaufs es sich handelt. Somit wird in deiner Formel mit der Index-Funktion dem Bereich D6:D512 der n-te Wert entnommen und zum LfdResultat addiert, wenn in Spalte B beim n-ten Suchschritt das gesuchte Kurzzeichen gefunden wurde.

Die Formel, wie du sie geschrieben hast, kann aber nicht einfach nach unten kopiert werden. Damit das möglich ist, müsstest du die Bereiche so definieren: B$6:B$512, bzw. D$6:D$512, und das explizite Kurzzeichen 'GV' durch die Referenz zur ersten Zeile deiner Kuzzeichenliste ersetzen.

Eine andere Möglichkeit wäre es, die Bedingung in der Formel anders zu formulieren (in der Annahme, dass die 512 in deiner Formel einfach der maximalen Tabellenlänge entspricht, jedoch weiter unten in Spalte B sicher nichts mehr steht, das einem deiner Kurzzeichen entspricht):

VSuchlauf(B:B;Und(LfdIndex>5;LfdZelle=G1);0;LfdResultat+Index(D:D;LfdIndex))

Mit dieser Formel wird die ganze Spalte B abgesucht, aber dabei die fünf ersten Zeilen ignoriert. Diese Formel lässt sich nach unten kopieren. Statt wie in deiner Formel das Kurzzeichen explizite einzusetzen, habe ich, wie oben angetönt und wie in der dritten Formel meiner ersten Antwort, die Referenz zur Zelle G1 verwendet. Diese Referenz G1 musst du einfach durch die Referenz zur ersten Zelle deiner Kurzzeichenliste ersetzen.

Gruss, Thomas

Re: Suchlauf und Addition

#10406 On 5 Januar, 2012 19:25 Thomas Kaegi said,

Hallo Jörg

Noch ein Hinweis: In der DE-Version von RagTime in den beiden ersten Formeln nur einfache statt der doppelten Anführungszeichen verwenden. Ich hatte die Formeln aus der DE-CH-Version kopiert - da sind doppelte Anführungszeichen erforderlich.

Thomas