Der Office-Thread

  • Ich habe ne Excel Frage. Vielleicht gibt's ja Experten hier?


    Ich möchte eine Formel nach diesem Schema haben:
    Berechne den Durchschnitt von Feld A1:A10000, beziehe nur die Zeilen mit ein ((wenn B1:B10000 den String "Al" oder "Az" oder "Af" enthalten) UND C1:C10000 = 40 ist).


    Jemand ne Idee?

  • Über die zur Verfügung stehenden Funktionen bekommst du es nach meiner Einschätzung nicht hin. Ich hätte aber einen sogenannten Bauerntrick als eine Idee:


    Du legst dir 2 zusätzliche Hilfsspalten an. Nennen wir sie Y1:10000 und Z1:10000. Du kannst sie ja außerhalb des sichtbaren Bereichs lassen, da sie ja quasi nur als Zwischenrechnung dienen.


    In die Y-Spalte kommt eine 1, wenn die Bedingungen erfüllt sind und eine 0 wenn nicht.
    In die Z-Spalte kommt der Wert aus A multipliziert mit dem Wert aus Y. Also bei Erfüllung der Bedingungen steht da der Wert aus A und bei Nichterfüllung eine 0.


    Wenn du den Durchschnitt nur für die Felder aus A berechnen willst, für die die Bedingungen erfüllt sind, bildest du die Summe aus Z und dividierst sie durch die Summe von Y.



    Du kennst die WENN-, ODER- und UND-Funktionen in Excel? Ansonsten bastel ich dir den Code nochmal explizit dazu.



    EDIT Die Funktion vom Unterbeeker sieht gut aus. Diese kannte ich noch nicht.

  • bei dieser Prozedur, die du beschreibst, Wacki, muss man aber mit der
    Null aufpassen ... Beispiel


    du hast 10 Felder mit ner Zahl drin, 5 Felder mit ner 0 - soll nun durch 10
    oder durch 15 geteilt werden ?!


    Edit: null ist natürlich auch ne Zahl ;-)

    Tradition ist das Weitergeben des Feuers

    und nicht das Verwahren der Asche !!!!

  • @Unterbeeker: dehshalb ja die Kontrollspalte mit Nullen und Einsen. Die Summe dieser Spalte ist die Anzahl der Felder, die "gewertet" werden sollen und durch diese Anzahl teilst du dann.


    Aber mein Bauerntrick ist ja eh hinfällig, da du ja schon eine passende Funktion gefunden hast. ;)

  • Danke schon mal für eure Hilfe. Mit der Funktion klappt es leider noch nicht :-/


    =AVERAGEIFS(N1:N10000;"=A*";AC1:AC10000) liefert mir leider Error 504 (Error in Parameterlist).
    Zusätzlich wüsste ich nicht, wie ich neben dem Vorkommen des Substrings A auch die zweite Bedingung, nämlich dass C1:C10000 = 40, überprüfen kann.
    EDIT: Okay, jeztzt klappt es. Aber er hat scheinbar ein Problem mit "=A*", weil er immer sagt, er würde 0 passende Zeilen finden. Wenn ich es aber bspw. einzeln mit Af oder Az probiere, dann klappt es. Dabei ist die Sytax ("=A*") doch genau so, wie in dem verlinkten Beispiel.

  • ich glaube, das mit dem * funktioniert nicht - habe es gerade mal ausprobiert ...


    wenn du mit der mittelwertwenn-Funktion nicht klar kommst, kannst du auch,
    wie Wackinho schrieb, 2 Helferspalten (oder Zeilen) einfügen ...


    wenn diese beiden Spalten dann zusammen 2 ergeben, soll er die Zahl in Spalte a
    addieren

    Tradition ist das Weitergeben des Feuers

    und nicht das Verwahren der Asche !!!!

  • Mit der 2. Bedingung sehe ich leider auch ein Problem, da du nur einmal einen zu untersuchenden Bereich zuweisen kannst. Du könntest zwar in dem Bereich eine logische Verknüpfung mit mehreren Bedingungen angeben (beispielsweise alle die mit A anfangen oder alle die mit B anfangen), aber deine zweite Bedingung bezieht sich ja auf einen anderen Bereich. Von daher sehe ich hier leider eine Schwachstelle.


    Warum dein Excel das "A*" nicht mag, weiß ich nicht. Ich kenne die Syntax auch nur so.

  • wenn diese beiden Spalten dann zusammen 2 ergeben, soll er die Zahl in Spalte a
    addieren

    8| ?(


    So sollten die Spalten Y und Z aussehen:


    Y1=AND(B1="A*";C1=40)
    Y2=AND(B2="A*";C2=40)
    ...
    Y10000=AND(B10000="A*";C10000=40)


    EDIT: Die Saplte Y muss wahrscheinlich nach der Initialisierung in ein numerisches Format umgewandelt werden, damit dort Nullen und Einsen stehen. die Zuweisung eines logischen Ausdrucks verwandelt diese wahrscheinlich automatisch in einen boolschen Wert (wahr oder falsch).


    Z1=Y1*A1
    Z2=Y2*A2
    ...
    Z10000=Y10000*A10000



    Durchschnitt:


    =SUMME(Z1:10000)/SUMME(Y1:10000)

  • hab hier was anderes gefunden
    (ein anderes Forum ... Achtung: dort hat ausgerechnet nen *ölner ne Lösung)


    er hat zuerst mit der wenn-Formel angefangen ... somit hat er die erste Abfrage drin und
    dann die mittelwertwenn-Funktion (hier ist ja auch eine drin) ...


    aber frag mich nicht, wie die Formal auszusehen hat :wacko:


    Wackinho - ich meinte es halt (Spalte A: die zu ermittelnen Durchschnittszahlen; Spalte B: af, al oder az oder andere, Spalte C: 40 oder andere)
    Spalte D = wenn Spalte B = af oder al oder az dann schreibe 1, sonst null
    Spalte E = wenn Spalte C = 40 dann schreibe 1, sonst null
    Spalte F = addiere D+E
    Spalte G = wenn Spalte F = 2 ... dann


    muss man halt einige Hilfsspalten einfügen, aber man muss ja auch nur einmal die Formel rauskriegen,
    dann kopieren --;;)

    Tradition ist das Weitergeben des Feuers

    und nicht das Verwahren der Asche !!!!

  • Wenn das so tatsächlich funktioniert, wäre das genial. Einen ähnlichen Ansatz hatte ich zuerst auch, da SQL-Abfragen nach einem ähnlichen Prinzip vorgehen. SQL hat aber eine andere, modernere Datenstruktur. Das hatte ich Excel eigentlich nicht zugetraut und die Idee direkt verworfen. Aber anscheinend kann der Compiler von Excel mittlerweile eine Menge mehr als ich ich das von früher kenne. :thumbup:


    @Unterbeeker: Jetzt habe ich dich verstanden. Du brauchst aber nicht für jede Teilbedingung eine eigene Spalte. Du kannst das alles mit einer Spalte machen, wie ich es oben beschrieben haben. --;;)