Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: bustue am November 22, 2024, 08:04:00

Titel: WENN(ISTZAHL(SUCHEN
Beitrag von: bustue am November 22, 2024, 08:04:00
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
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: MzKlMu am November 22, 2024, 08:53:36
Hallo,
im Prinzip ähnlich wie Excel.
Erkläre mal den Sinn der Formel.

Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: bustue am November 22, 2024, 09:34:01
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
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: MzKlMu am November 22, 2024, 09:53:35
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.
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: bustue am November 22, 2024, 10:50:07
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
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: Beaker s.a. am November 22, 2024, 11:20:26
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
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: MzKlMu am November 22, 2024, 11:31:59
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.
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: Beaker s.a. am November 22, 2024, 11:56:04
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
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: bustue am November 22, 2024, 12:27:17
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.
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: MzKlMu am November 22, 2024, 17:52:50
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.
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: Debus am November 22, 2024, 19:16:53
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
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: MzKlMu am November 22, 2024, 19:27:36
Hallo,
@ holger
Es gibt kein Feld in der Beispieltabelle das ein x enthält.
Von Fortis ist im Beispiel auch nichts zu erkennen.
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: Debus am November 22, 2024, 19:38:24
Hey ich wollte ja auch nur aufzeigen wie man die Formel generell umsetzen kann.

Also IIF <> Wenn

Holger
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: MzKlMu am November 22, 2024, 19:48:30
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)
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: Debus am November 22, 2024, 20:41:45
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
Titel: Re: WENN(ISTZAHL(SUCHEN
Beitrag von: Knobbi38 am November 22, 2024, 22:02:11
Hallo,

mal abgesehen davon, daß man schnell die max. Anzahl an geschachtelten iif erreicht, ist das doch Excel-Denke und kann bei einem richtigen Datenmodell oft komplett wegrationalisiert werden.