Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

WENN(ISTZAHL(SUCHEN

Begonnen von bustue, November 22, 2024, 08:04:00

⏪ vorheriges - nächstes ⏩

bustue

Hallo Freunde,
ist es möglich in einer Abfrage folgende Excel-Formel umzusetzen:
FORUM:Wenn(ISTZAHL(SUCHEN("FORUM";[Artikelbezeichnung]);"x";""))
Für Eure Hilfe im Voraus sehr dankbar
BuStue
Schöne Grüße aus Mecklenburg-Vorpommern
Burghard

MzKlMu

Hallo,
im Prinzip ähnlich wie Excel.
Erkläre mal den Sinn der Formel.

Gruß Klaus

bustue

Hallo Klaus, danke für Deine schnelle Antwort. Die Formel ist Bestandteil einer weiteren. Sie soll in der Spalte Artikelbezeichnung alle Einträge suchen die das Wort "Forum" enthalten und bei Erfolg eine x erstellen. Eine weitere Formel sucht nach dem Wort "Fortis", Wiederum eine Fromel Sucht in einer anderen Spalte nach bestimmten Warengruppen. Die Ergebnisse dieser Formeln werden für die Preisberechnung benötigt.
Da hinter den Worten Forum und Fortis Rabatte stehen. In Excel lautet die Formel dann folgendermaßen:

=WENN([@FORUM]="x";[@[Einkaufspreis netto]]*(1-FORUM);WENN(UND([@Fortis]="x";[Fortis ABS]=1);[@[Einkaufspreis netto]];WENN([@Fortis]="x";[@[Einkaufspreis netto]]*(1-FORTIS);[@[Einkaufspreis netto]])))

Gruß
Burghard
Schöne Grüße aus Mecklenburg-Vorpommern
Burghard

MzKlMu

Hallo,
was heißt eine x erstellen, eine berechnete Spalte?
Wie erfolgt die Preisberechnung?
Vermutlich ist das Vorhaben Exceldenke und für Access eher ungeeignet?

Gibt es ein Datenmodel (Beziehungen) für Access?
Wenn ja, Bild des Beziehungsfensters hier zeigen.
Gruß Klaus

bustue

Hallo,

Splate EK errechnet sich so: wenn in der Spalte Forum ein x steht, dann soll der Einkaufspreis netto -3% gerechnet werden usw. (Siehe oben)
Es gibt nur eine Beziehung zu LieferantenID die damit gemappt wird.

Gruß
Burghard
Schöne Grüße aus Mecklenburg-Vorpommern
Burghard

Beaker s.a.

Hallo Burghard,

Wenn es nur einen Rabatt pro Lieferant gibt, würde ich den %-Satz direkt
in eine Spalte "Rabatt" beim diesem hinterlegen. Gibt es mehrere brauchst
du eine Tabelle mit Rabattsätzen und eine Zwischentabelle (n:m) die die
FK von Lieferant und Rabattsatz enthält. U.U. kann es sogar sinnvoll sein
da noch einen FK für eine ArtikelID mitzuführen.
Der EK brechnet sich dann einfach mit
Listenpreis * (1 - Rabattsatz)Die Rabattsätze würde ich dabei mit dem Typ "Währung" anlegen und nicht als
Integer-Wert sondern mit dem tatsächlichen Wert (3% = 0,03) speichern. Das
erspart die Berechnungen mit * 100 bzw. / 100. Ausser vielleicht bei der
Eingabe, wenn der User nicht weiss, das er da den Dezimalwert eingeben muss.

Das "x" brauchst dann auch nicht, - für keinen Rabatt trägst du halt einfach eine
0 ein.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

#6
Hallo,
der Vorschlag von ekkehard wäre für eine Datenbank die bessere Lösung.

Aber, selbst wenn Du das wie bisher machen willst, sind die Formeln überflüssig.
Das lässt sich in einer Abfrage völlig problemlos über Bedingungen lösen.

Zeige bitte mal beispielhaft den Aufbau Deiner Tabelle.


PS:
Es gibt in Access eine einfache (etwas verallgemeinentere) Regel:
Wer in Access verschachtelte Wenn Formeln braucht, hat eine falsche Tabellenstruktur.
Gruß Klaus

Beaker s.a.

Hallo,

Muss meinen vorigen Post noch einmal "korrigieren".
ZitatU.U. kann es sogar sinnvoll sein
da noch einen FK für eine ArtikelID mitzuführen.
Das ist nicht nur "u.U." sinnvoll, sondern "auf jeden Fall".
Es kann ja vorkommen, ob nun jetzt schon oder erst in der Zukunft,
dass es mehrere Lieferanten für einen Artikel gibt.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

bustue

Hallo,
anbei ein Muster der Tabelle. Im Original befinden sich über 451.000 Datensätze.
Leider kann ich mit ein"FK" für eine ArtikelID nichts anfangen.(Bildungslücke)
Die Rabatte ergeben sich nur aus den Worten "FORUM" und "FORTIS" aus der Artikelbezeichnung bzw. einer Liste von bestimmten Warengruppen.
Schöne Grüße aus Mecklenburg-Vorpommern
Burghard

MzKlMu

Hallo,
kannst Du bitte an Hand der Exceltabelle beschreiben was gerechnet wird ?

Es wäre auch sinnvoll gewesen, wenn die Beispieltabelle auch Datenzeilen mit FORTIS enthalten würde.
Außerdem ist mir aufgefallen, dass es das Wort FORUM als Teil der Bezeichnung gibt, als auch in einer extra Spalte mit dem Namen Marke.
Was hat es damit auf sich?
Kann in dieser Spalte auch FORTIS stehen ?
Könnte dann nicht diese Spalte für die Bedingung verwendet werden ?

Der Aufbau der Tabelle für Access ist ungeeignet.
Hast Du noch mehr vor über Access oder bleibt es bei dieser einen Aufgabe?
Wenn Du mehr vorhast, wirst Du um eine Umstruturierung der Tabelle nicht herumkommen.

ZitatLeider kann ich mit ein"FK" für eine ArtikelID nichts anfangen.
Das sind natürlich Grundlagen zu Access die man wissen sollte.
Gruß Klaus

Debus

Hey, vielleicht darf ich mich mal einmischen.

Die IIf-Funktion in Access entspricht der Wenn-Funktion in Excel.

Deshalb mal so aus dem Bauch

Mache eine Abfrage mit allen Benötigten Felder und hänge hinter in einem Leeren Feld folgendes ein

IIf([FORUM]="x", [Einkaufspreis netto]*(1-[FORUM]),
    IIf([Fortis]="x" And [Fortis ABS]=1, [Einkaufspreis netto],
        IIf([Fortis]="x", [Einkaufspreis netto]*(1-[FORTIS]),
            [Einkaufspreis netto]))) AS BerechneterPreis

Gruß
Holger

MzKlMu

#11
Hallo,
@ holger
Es gibt kein Feld in der Beispieltabelle das ein x enthält.
Von Fortis ist im Beispiel auch nichts zu erkennen.
Gruß Klaus

Debus

Hey ich wollte ja auch nur aufzeigen wie man die Formel generell umsetzen kann.

Also IIF <> Wenn

Holger

MzKlMu

Hallo,
@ Holger
In Formeln kennt ein deutsches Access auch Wenn.
Wenn Du da IIF schreibst ändert das Access automatisch in Wenn().
Erst wenn Du zu SQL wechselst wird wieder ein IIF draus.

Ich mein ja blos.  ;D  8)
Gruß Klaus

Debus

Ist schon klar. aber ich finde IIF immer besser um das zu unterscheiden.
Aber vielleicht sollten wir mal eine Beispiel DB hier bekommen, dann kann man das ja mal versuchen zu lösen.

Gruß
Holger