[gelöst] Bitte nicht lachen !

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Dietz33
*
Beiträge: 14
Registriert: Mo, 25.05.2020 22:24

[gelöst] Bitte nicht lachen !

Beitrag von Dietz33 »

ich glaub ich mach hier sicher was falsch.
ich versuch einen check zu schreiben um dann einen wert auszugeben und " muss" dazu jede einzelne anfrage auf jeden einzelnen "datanbankeintrag" anwenden.

es funktioniert alles prima, nur kommt jetzt fehler 512 weil die formel za lange ist , und ich hab noch nicht mal 5% von dem was ich machen will.

das ist der code bis jetzt:

Code: Alles auswählen

=WENN(UND(BA74="true";D9>Databank.C196);"crap"&T(VORLAGE("crap"));
WENN(UND(BA74="true";D9<Databank.D628;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA74="true";D9<=Databank.C196;D9>=Databank.D196);"95"+VORLAGE("95");
WENN(UND(BA74="true";D9<=Databank.C412;D9>=Databank.D412);"96"+VORLAGE("96");
WENN(UND(BA74="true";D9<=Databank.C628;D9>=Databank.D628);"97"+VORLAGE("97");
WENN(UND(BA2="true";D9<Databank.C374);"crap"&T(VORLAGE("crap"));
WENN(UND(BA2="true";D9>Databank.D590;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA2="true";D9>=Databank.C374;D9<=Databank.D374);"95"+VORLAGE("95");
WENN(UND(BA2="true";D9>=Databank.C374;D9<=Databank.D374);"96"+VORLAGE("96");
WENN(UND(BA2="true";D9>=Databank.C590;D9<=Databank.D590);"97"+VORLAGE("97");
WENN(UND(BA6="true";D9<Databank.C383);"crap"&T(VORLAGE("crap"));
WENN(UND(BA6="true";D9>Databank.D383;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA6="true";D9>=Databank.C383;D9<=Databank.D383);"95"+VORLAGE("95");
WENN(UND(BA6="true";D9>=Databank.C383;D9<=Databank.D383);"96"+VORLAGE("96");
WENN(UND(BA6="true";D9>=Databank.C383;D9<=Databank.D383);"97"+VORLAGE("97");
WENN(UND(BA10="true";D9<Databank.C176);"crap"&T(VORLAGE("crap"));
WENN(UND(BA10="true";D9>Databank.D608;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA10="true";D9>=Databank.C176;D9<=Databank.D176);"95"+VORLAGE("95");
WENN(UND(BA10="true";D9>=Databank.C392;D9<=Databank.D392);"96"+VORLAGE("96");
WENN(UND(BA10="true";D9>=Databank.C608;D9<=Databank.D608);"97"+VORLAGE("97");
WENN(UND(BA14="true";D9<Databank.C185);"crap"&T(VORLAGE("crap"));
WENN(UND(BA14="true";D9>Databank.D617;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA14="true";D9>=Databank.C185;D9<=Databank.D185);"95"+VORLAGE("95");
WENN(UND(BA14="true";D9>=Databank.C401;D9<=Databank.D401);"96"+VORLAGE("96");
WENN(UND(BA14="true";D9>=Databank.C617;D9<=Databank.D617);"97"+VORLAGE("97");
WENN(UND(BA18="true";D9<Databank.C194);"crap"&T(VORLAGE("crap"));
WENN(UND(BA18="true";D9>Databank.D626;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA18="true";D9>=Databank.C194;D9<=Databank.D194);"95"+VORLAGE("95");
WENN(UND(BA18="true";D9>=Databank.C410;D9<=Databank.D410);"96"+VORLAGE("96");
WENN(UND(BA18="true";D9>=Databank.C626;D9<=Databank.D626);"97"+VORLAGE("97");
WENN(UND(BA22="true";D9<Databank.C203);"crap"&T(VORLAGE("crap"));
WENN(UND(BA22="true";D9>Databank.D635;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA22="true";D9>=Databank.C203;D9<=Databank.D203);"95"+VORLAGE("95");
WENN(UND(BA22="true";D9>=Databank.C419;D9<=Databank.D419);"96"+VORLAGE("96");
WENN(UND(BA22="true";D9>=Databank.C635;D9<=Databank.D635);"97"+VORLAGE("97");
WENN(UND(BA26="true";D9<Databank.C212);"crap"&T(VORLAGE("crap"));
WENN(UND(BA26="true";D9>Databank.D644;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA26="true";D9>=Databank.C212;D9<=Databank.D212);"95"+VORLAGE("95");
WENN(UND(BA26="true";D9>=Databank.C428;D9<=Databank.D428);"96"+VORLAGE("96");
WENN(UND(BA26="true";D9>=Databank.C644;D9<=Databank.D644);"97"+VORLAGE("97");
WENN(UND(BA30="true";D9>Databank.C160);"crap"&T(VORLAGE("crap"));
WENN(UND(BA30="true";D9<Databank.D591;ISTZAHL(D9));"PC!"&T(VORLAGE("Pc"));
WENN(UND(BA30="true";D9<=Databank.C160;D9>=Databank.D160);"95"+VORLAGE("95");
WENN(UND(BA30="true";D9<=Databank.C375;D9>=Databank.D375);"96"+VORLAGE("96");
WENN(UND(BA30="true";D9<=Databank.C591;D9>=Databank.D591);"97"+VORLAGE("97");"E"&T(VORLAGE("Standard2")))))))))))))))

brauche bitte offensichtlich hilfe !

danke !
Zuletzt geändert von Dietz33 am So, 31.05.2020 12:55, insgesamt 1-mal geändert.
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Bitte nicht lachen !

Beitrag von Hiker »

Hallo,

wenn das nur 5% sind brauchst Du nicht anzufangen an der Formel zu optimieren. (Man könnte auf das Setzen der Vorlage verzichten, das kann eine bedingte Formatierung machen und mehrfach densekben Wert auf True zu testen könnte Mann in ein eigenes WENN auslagern).
Am Ende wird die Formel trotzdem zu lang.

Nebenbei: Stell Dir Mal kurz vor, wie Du in dem Monster einen Fehler finden willst...

Wenn - wie Du schreibst - das so sein "muss" könntest Du auf ein Macro ausweichen, damit kann man wenigstens formatiert übersichtlich schreiben und eventuell auch die Gruppierung von crap bis 97 in eine Unterroutine auslagern. Auf den ersten Blick erschließt sich mir die Logik dahinter aber nicht.

Ich löse so etwas auch gerne mit Hilfszellen, in denen Teilberechnungen gelöst werden können, aber dazu müsste ein System erkennbar sein.
Z.B. in XX6 erstmal die Tests zu BA6=True speichern,
In XX10 die für BA10=True etc.

Ich bin mir aber nicht sicher, dass ich wissen will, wie das Problem aussieht, dessen Lösung Deine Formel ist...

Mfg, Jörn

PS: Ist an anderer Stelle schon Mal gesagt worden: Wenn Du Hilfe willst, ist es nützlich die Datei anzuhängen, sofern Sie keine personenbezogenen Daten enthält. Sonst bleibt es eventuell bei allgemeinen Hinweisen wir hier, weil keiner Dein Problem versteht.
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Mondblatt24
*******
Beiträge: 1136
Registriert: So, 14.05.2017 16:11

Re: Bitte nicht lachen !

Beitrag von Mondblatt24 »

Hallo Dietz33,

https://de.openoffice.info/viewtopic.ph ... 41#p290641
PS: Ist an anderer Stelle schon Mal gesagt worden: Wenn Du Hilfe willst, ist es nützlich die Datei anzuhängen, sofern Sie keine personenbezogenen Daten enthält. Sonst bleibt es eventuell bei allgemeinen Hinweisen wir hier, weil keiner Dein Problem versteht.
@Dietz33: Ich habs Dir ja gesagt.


Gruß Peter
Win 11 (x64) ▪ 24.2.1.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
Dietz33
*
Beiträge: 14
Registriert: Mo, 25.05.2020 22:24

Re: Bitte nicht lachen !

Beitrag von Dietz33 »

Hab ein kurzes video gemacht wo man vielleicht sieht worum es geht:

die eingabemaske sieht so aus:
screenshot der maske
screenshot der maske
maske.jpg (27.48 KiB) 2822 mal betrachtet
die datenbank so:

[/url]
screenshot der daten
screenshot der daten
daten.jpg (149.55 KiB) 2822 mal betrachtet
man wählt also im drop down ( siehe video) das gewünschte aus , und es erscheint dann so etwas wie qualtität und preise , etc....

https://drive.google.com/open?id=1kL9Zh ... qaP2R-Cpok

ich weiss nicht obs was bringt aber ich kann ja die ods datei auch anhängen, aber ich befürchte da kennt sich dann keiner mehr aus,, lol .
Dateianhänge
Loot Table New 2020.ods
das projekt
(335.37 KiB) 85-mal heruntergeladen
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bitte nicht lachen !

Beitrag von mikeleb »

Hallo,
grundsätzlich verlangt das nach SVERWEIS(). Es bleibt aber unklar welcher Teil der Datenbank betrachtet werden soll. Nachdem "Weapon", "Level8" und "Mass" gewählt wurden: Sollen dann die Daten aus Zeile 196, 412 oder 682 der Datenbank gewählt/betrachtet werden?
Gruß,
mikeleb
Dietz33
*
Beiträge: 14
Registriert: Mo, 25.05.2020 22:24

Re: Bitte nicht lachen !

Beitrag von Dietz33 »

aufs einfachste runtergebrochen funktioniert es so:

es gibt qualitätsstufen (95%,96%,97%)
von diesen gibt es jeweils teile (reactor , weapon)
die ersten zwei Werte bestimmen den bereich bezüglich der qualität, sprich:

wenn man einen wert eingibt checkt das programm ob der wert zwischen den werten liegt und gibt dann die qualität aus.
(=WENN(UND(A1<=Databank.B1;A1>=Databank.C1);"97",xxx)

( bei: =WENN(SUMMENPRODUKT(Databank.B1:B5>=A1;Databank.C1:C5<=A1);"97" kommt er bei mir leider manchmal durcheinander.)

nachdem die qualität ermittel wurde , spuckt er noch den bereich aus (die zwei werte wo der eingegebene wert dazwischen liegt) UND den
preisberreich ( die letzten 2 zahlen )

ich hab das ursprünglich anders versucht, und zwar mit einer tabelle wo manfür jedes level und Teil eine eigen zelle hat (.s.u,) nur wollte ich etwas kompakteres versuchen.

versuch1.jpg
versuch1.jpg (154.98 KiB) 2744 mal betrachtet
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bitte nicht lachen !

Beitrag von mikeleb »

Hallo,
der Aufbau der Datenbanktabelle ist dafür ungünstig.
Pro Zeile z. B.:
Weapon;Level 8;Mass;Min Value;Max Value;Credits min;Credits max
Dann ließe sich darin vernünftig suchen. Allerdings sollte vorher klar sein, was noch alles damit gemacht werden soll. Wahrscheinlich ist ein noch anderer Aufbau noch sinnvoller.
Gruß,
mikeleb
Dietz33
*
Beiträge: 14
Registriert: Mo, 25.05.2020 22:24

Re: Bitte nicht lachen !

Beitrag von Dietz33 »

was wäre denn ein bessere aufbau der tabelle ?

falls dein beispiel ein vorschlag ist wie es ev. aussehen sollte dann versteh ichs nicht, weil genau so ist es ja aufegebaut - oder meinst du da als spalten einträge ?
echo
*******
Beiträge: 1005
Registriert: Fr, 14.11.2008 15:27
Wohnort: BRA - Nds

Re: Bitte nicht lachen !

Beitrag von echo »

Hallo
deine Liste in databank sollte so aufgebaut sein, das eine Formel die richtige Zeile aus der kompletten Liste suchen kann, und das Ergebnis aus dieser Zeile anzeigt.

Das bedeutet, das jedes Suchkriterium eine eigene Spalte bekommt: Du hast die Inhalte der relevanten Spalten in =$Databank.H:K ja schon stehen.
Beispiel was in einer Zeile stehen könnte: drei Spalten Spalte 1 : Reactor / Spalte 2: Level 1 / Spalte 3: Armor/Hp
Diese Angaben kommen in JEDE Zeile deiner Liste
Kommen weitere Suchkriterien dazu bekommen auch diese eine eigene Suchspalte.
Achte drauf, das sich keine Leerzeichen ec. verbergen sondern die Spalteninhalte wirklich immer gleich dem Suckkriterium ist.

Wenn du das hast kann eine Formel Spalte für Spalte nach Übereinstimmungen suchen und auch prüfen ob ggf. ein Wert in der Zeile dazu passt.
Ist alles WAHR gibt die Formel dann das Ergebnis aus exakt diese Zeile zurück.

Übrigens lassen sich einige Inhalte recht einfach auf mehrere Spalten zerlegen in dem du die Spalte in einen leeren Bereich kopierst und dort auf die markierte Liste die Funktion "Daten"> Text in Spalten anwendest.

Hoffe ich konnte etwas helfen
Gruß Holger
Dietz33
*
Beiträge: 14
Registriert: Mo, 25.05.2020 22:24

Re: Bitte nicht lachen !

Beitrag von Dietz33 »

und wie könnte dann die suchformel aussehen ?
echo
*******
Beiträge: 1005
Registriert: Fr, 14.11.2008 15:27
Wohnort: BRA - Nds

Re: Bitte nicht lachen !

Beitrag von echo »

hallo
da steht zwar Excel drüber, ist aber trotzdem eine tolle Seite zum Nachschlagen:
https://www.herber.de/excelformeln/src/ ... la_list.pl

Zum Beispiel:
https://www.herber.de/excelformeln/page ... effer.html

Die allermeisten Formeln lassen sich nach Bedarf anpassen
Gruß Holger
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bitte nicht lachen !

Beitrag von mikeleb »

Hallo,
anbei ein Beispiel, wie es möglich wäre.
Dateianhänge
beispiel loot table.ods
(22.36 KiB) 93-mal heruntergeladen
Gruß,
mikeleb
Dietz33
*
Beiträge: 14
Registriert: Mo, 25.05.2020 22:24

Re: Bitte nicht lachen !

Beitrag von Dietz33 »

danke ist super !
Antworten