Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.05.2024 07:51:35
16.05.2024 02:23:40
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formellösung optimierbar?

Formellösung optimierbar?
07.02.2020 09:48:35
erichm
Hallo,
ich habe zwei Tabellen:
Tabelle Kategorie, belegt sind jeweils die Zeilen 2 bis 21:
Spalte B: Zahlen von 1 bis 5
Spalte D und Spalte E: Zahlenwerte, wobei in Spalte D die Zahl von xx und in Spalte E die Zahl bis xx steht; also von kleinster Wert bis größter Wert
Spalte F und Spalte G: Zahlenwerte, wobei in Spalte F die Zahl von xx und in Spalte G die Zahl bis xx steht; also von kleinster Wert bis größter Wert
Spalte J = "Zuordnung" mit JA oder NEIN, je nachdem welche Werte aus den Spalten B bis G zutreffen
Tabelle Auswertung:
In den Spalten A bis BE stehen verschiedene Daten die in den nachfolgenden Spalten "ausgewertet werden":
Spalte BF: wie oft hat sich der in Spalte BE ermittelte Wert in den letzten Spalten vorher wiederholt? - also 1x, 2x 3x usw.; dieser Wert wird dann abgeglichen mit den Werten in Spalte B der Tabelle Kategorie
Spalte BG: wie oft ist der in Spalte BE ermittelte Wert in den Spalten A bis einschließlich BD vorgekommen, also x-mal; dieser Wert wird dann abgeglichen mit den Werten in den Spalten D und E der Tabelle Kategorie
Spalte BH: wie oft hat sich der in Spalte BE ermittelte Wert in den Spalten A bis einschließlich BD wiederholt, dass heißt er ist mindestens 2x direkt hintereinander vorgekommen; dieser Wert wird dann verglichen mit den Werten in den Spalten F und G der Tabelle Kategorie
Spalte BJ: hier wird die Lösung = Zuordnung gesucht; meine bisherige Formel funktioniert zwar, wird aber immer länger, je mehr Prüfungen erfolgen.
Die Aufgabenstellung lautet, wobei die Prüfung in Spalte BJ ab Zeile 2 erfolgt und für jede Zeile individuell zu prüfen ist:
Steht in der Spalte B in der jeweiligen Zeile "aktiv"; wenn nein ist die Prüfung beendet und die Zeile in Spalte BJ wird mit "" befüllt. Ist in der Spalte B "aktiv" vorhanden, dann vergleiche folgende Werte "gleichzeitig":
Spalte BF mit Spalte B in Tabelle Kategorie; Werte müssen identisch sein
Spalte BG mit den Spalten D und E in Tabelle Kategorie; der Wert muss in der Bandbreite "von xx bis xx" liegen
Spalte BH mit den Spalten F und G in Tabelle Kategorie; der Wert muss in der Bandbreite "von xx bis xx" liegen
ERGEBNIS: wenn alle drei Bedingungen erfüllt sind, dann befülle mit dem Wert (= JA oder NEIN) aus der jeweiligen Zeile der Spalte J der Tabelle Kategorie; wenn nur zwei oder weniger Bedingungen erfüllt sind, dann befülle mit "offen". Dabei wird jede Zeile der Spalte BJ in Tabelle Auswertung mit jeder Zeile der Tabelle Kategorie "von oben nach unten" abgeprüft. Diesen Prüfungsvorgang habe ich in Spalte BJ abgebildet, jedoch derzeit nur bis zur Zeile 5 der Tabelle Kategorie. Je mehr Zeilen ich prüfen möchte, desto länger wird meine Formel......
~=WENN(B2"aktiv";"";WENN(UND(BF2=Kategorie!B$2;BG2>=Kategorie!D$2;BG2=Kategorie!F$2;BH2=Kategorie!D$3;BG2=Kategorie!F$3;BH2=Kategorie!D$4;BG2=Kategorie!F$4;BH2=Kategorie!D$5;BG2=Kategorie!F$5;BH2 die Musterdatei (Spalten zum Teil zur besseren Transparenz farblich markiert)
https://www.herber.de/bbs/user/135047.xlsx
Kann man das vereinfachen / verbessern?
Evtl. wäre hier auch eine VBA-Lösung möglich.
Vielen Dank für eine Hilfe.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formellösung optimierbar?
07.02.2020 22:17:05
onur
Deine Formel zu lesen verursacht schon Kopfschmerzen.
Erzähle doch einfach, wofür das Ganze gut ist und die Logik dahinter.
Vor allem, warum du eine Zelle mit mehreren Zellen auf dem anderen Blatt vergleichen willst.
AW: Formellösung optimierbar?
08.02.2020 09:15:42
erichm
Hallo onur,
hatte versucht, das "bestmöglich" zu beschreiben. Die Musterdatei ist natürlich nur ein kleiner Ausschnitt von der gesamten Datenmenge. Zum Hintergrund:
1. Es geht um umfangreiche statistische Auswertungen, deren Grundlagen aus verschiedenen Datenquellen bestehen.
2. Über die Auswertungen sollen Zusammenhänge bzw. Wahrscheinlichkeiten herausgefunden werden, die sich oft bzw. mehrmals wiederholen - bzw. die ggfls. "einzigartig" sind.
3. Je umfangreicher der Datenbestand ist bzw. wird, desto mehr kristallisieren sich aufgrund dieser Auswertungen bestimmte Konstellationen heraus, die weiter genutzt werden können.
4. Die Auswertungen können aber auch zu dem Ergebnis führen, dass die in der Tabelle Kategorie gewählten Parameter (= von xx bis xx-Korridore) "noch angepasst" werden müssen. Davon gehe ich eigentlich aus.
Ich hoffe, das wird jetzt ewtas klarer....
Besten Dank.
mfg
Anzeige
AW: sicherlich ...
08.02.2020 09:57:17
neopa
Hallo Erich,
... aber zunächst nachgefragt:
Deine Formeln in Auswertung!J2:J## stehen im Widerspruch zu Deiner verbalen Angabe: "... wenn alle drei Bedingungen erfüllt sind, dann befülle mit dem Wert (= JA oder NEIN) aus der jeweiligen Zeile der Spalte J der Tabelle Kategorie" In Deiner Formel wird nur auf Spalte J, also der Tabelle Auswertung Bezug genommen. Was gilt also?
Und oT: Aus Deiner Beispieldatei eingelesen in meiner Excel 2010, schließe ich, dass Du Office365 im Einsatz hast? Denn nur so erklärt sich mir, dass Deine sämtlichen Formeln in BE:BI mit {} geklammert sind, obwohl diese nicht notwendig sind und in Deiner Version sicherlich auch nicht so vorhanden sind? Möglicherweise steht bei Dir dafür anstelle dessen ein @Zeichen vor der Formel? Oder?
Gruß Werner
.. , - ...
Anzeige
AW: sicherlich ...
08.02.2020 11:09:03
erichm
Hallo Werner,
da hat sich beim kopieren ein Fehler eingeschlichen. Die "Auswertungsformel" in Auswertung!BJ2:BJ## hatte nur beim Vergleich der Zeile 2 die Verknüpfung zur Tabelle Kategorie; ab Zeile 3 wurde auf J der gleichen Tabelle Bezug genommen - was aber falsch war.
Die neue, richtige Formel in Auswertung!BJ2:
=WENN(B2"aktiv";"";WENN(UND(BF2=Kategorie!B$2;BG2>=Kategorie!D$2;BG2=Kategorie!F$2;BH2=Kategorie!D$3; BG2=Kategorie!F$3;BH2=Kategorie!D$4;BG2=Kategorie!F$4;BH2=Kategorie!D$5;BG2=Kategorie!F$5; BH2 Damit der "Fehler" nicht nochmals oder ähnlich passieren kann, habe ich die Werte in Spalte J, Tabelle Kategorie geändert:
NEIN wurde zu x
JA wurde zu y
neue Musterdatei mit der neuen Formel:
https://www.herber.de/bbs/user/135066.xlsx
Ja, ich habe Office365 im Einsatz. In diesen Formeln befindet sich kein @Zeichen; evtl. hängt dies damit zusammen, dass die Formeln auf den Namensmanager zurückgreifen - ich weiß es aber nicht. Bei anderen Formeln gibt es teilweise das @Zeichen.
Besten Dank.
mfg
Anzeige
AW: jetzt eher nachvollziehbar ...
08.02.2020 11:30:53
neopa
Hallo Erich,
... aber so wie ich Deine verbalen Angaben interpretiere, können Deine bisherigen Formelergebnis für alle Werte aus Spalte BF 1 nur zufällig richtig sein.
Ich bin jetzt allerdings gleich erst einmal offline. Schau es mir aber später auf jeden Fall genauer. Die Idee für die Formellösung hab ich jedenfalls schon.
Gruß Werner
.. , - ...
AW: meine "Idee" ließ sich realisieren ...
08.02.2020 18:20:31
neopa
Hallo Erich,
... unter der Voraussetzung, dass im Tabellenblatt die Werte in Spalte B, wie bisher auch erkennbar aufwärts sortiert vorliegen.
Die Lösungsformel hab ich zum besseren Verständnis strukturiert durch benannte Formeln in drei "Stufen".
Die Zellformel in Auswertung!BJ2 lautet wie folgt: =WENN($B2"aktiv";"";_Auswert) welche nach der Definition der benannten Formeln eingeestzt und nach unten kopiert wird.
Als benannte Formel zuletzt definiert wird: _Auswert wird wie deren untergeordneten benannten Formeln in BJ2 definiert:
=WENNFEHLER(INDEX(Kategorie!$J:$J;_Anf+VERGLEICH(1;INDEX((_ANZvon&lt=!$BG2)*
(_ANZbis&gt=!$BG2)*(_WDHvon&lt=!$BH2)*(_WDHbis&gt=!$BH2););0));"offen")

zuvor jedoch folgende:
_ANZvon: =INDEX(Kategorie!$D:$D;_Anf):INDEX(Kategorie!$D:$D;_End)
_ANZbis: =INDEX(Kategorie!$E:$E;_Anf):INDEX(Kategorie!$E:$E;_End)

_WDHvon: =INDEX(Kategorie!$F:$F;_Anf):INDEX(Kategorie!$F:$F;_End)
_WDHbis: =INDEX(Kategorie!$G:$G;_Anf):INDEX(Kategorie!$G:$G;_End)

und als erstes werden folgende benannte Namen definiert:
_Anf: =VERGLEICH(!$BF2;Kategorie!$B:$B;0)
_End: =ZÄHLENWENN(Kategorie!$B:$B;"&lt"&!$BF2+1)+1

Ich hoffe ich hab die Formeln richtig kopiert dargestellt.
Gruß Werner
.. , - ...
Anzeige
wieder eine tolle Lösung!
09.02.2020 21:36:50
erichm
Hallo Werner,
funktioniert wieder wunderbar - heute alles getestet. Erleichtert die Analyse ungemein.
Vielen, vielen Dank!
mfg
AW: schön, freut mich auch owT
10.02.2020 18:06:16
neopa
Gruß Werner
.. , - ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige