Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Komplexeres Problemchen mit Gültigkeitsprüfung....

Komplexeres Problemchen mit Gültigkeitsprüfung....
Matthias
Hallo zusammen,
das is mein erster Beitrag hier, also bitte mir Samthandschuhen anfassen, ja? :)
Ich habe versucht, Excel aufgrund des praktikableren Umgangs mit Zellen un zeilen zum Import für einen Treeview-Verzeichnisbaum in Access zu nutzen.
Dabei benüöige ich aber auch ein bissl VBA in Excel, konnte meine Kenntnisse aus Access nicht wirklich transferieren...
Beschreibung:
Also erreicht werden sol letztendlich eine bedingte Pulldownmenü-Gültigkeitsprüfung in Spalte D, dass Werte aus Spalte C aufnimmt, die eine EBene höher aufweisen als der User in der vorhandenen Gürltigkeitsliste in Spalte B auswählt...
Beispiel:
Also: Ich wähle in B z.B. Ebene 3 (als ebene des Elementes), schreibe den Elementnamen in Spalte C und kann dann in Spalte D auswählen, wobei in der Liste alle Elemente stehen sollen, die in Spalte B "Ebene 2" (also eine Ebene höher) haben.
Ich denke mal =SVerweis() führt normalerweise zum richtigen Ergebnis, aber die Dynamisierung erreicht man nur mit VBA... :(
Wäre echt super, wenn ich da ein bissl Hilfestellung kriegen könnte...
Danke euch!!!!!!
Bis hoffentlich bald,
Matthias
P.S.: Beispiel-Tabelle unter:
https://www.herber.de/bbs/user/9753.xls

37
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Komplexeres Problemchen mit Gültigkeitsprüfung....
Boris
Hi Matthias,
ich komm mit deiner Beschreibung in der Tabelle nicht klar:
abhängig von der Auswahl im Gültigkeitspulldown Menü in Spalte B soll in Spalte D ein ähnliches Pulldown Menü angezeigt werden, das alle Werte enthält, die in Spalte B eine Ebene höher haben
Gib doch bitte mal ein Beispiel, wie das "ähnliche Pulldown" denn gefüllt werden soll.
Grüße Boris
AW: Komplexeres Problemchen mit Gültigkeitsprüfung....
Matthias
Hm... ich umschreib das nochmal...
Z.B. user fällt Wahl in vorhandenem gültigkeitsfeld Spalte A: "Ebene 3"
dann trägt user name des Elementes ein
und in Spalte C soll dann per Code eine Gültigkeitsliste erscheinen, die alle Elemente mit Namen (Spalte B) enthält, deren Ebene 2 ist (immer einshöher als spalte A9
Also dann:
A: Ebene 3 (Auswahl durch user) | B: "NAME" (Eingabe durch User) | C: per VBA eine Liste mit Allen namen deren Ebene 2 ist! (User wählt dann aus)
Ich hoffe, jetzt ist es besser verständlich!? :)
Gruß aus der Hauptstadt,
Matthias
Anzeige
AW: Komplexeres Problemchen mit Gültigkeitsprüfung....
Matthias
Hab grad eine Lösung im Archiv gefunden, die einen auf den richtigen Weg bringen dürfte... muss man nur noch anpassen (können)... :)
https://www.herber.de/bbs/user/6551.xls
Aber... ich glaube selbst dabei bruahc ich noch ein bissl hilfe...
Die Datei ist von mir...
mir...
Hi Matthias,
...und ist mir daher auch bestens geläufig.
In die Richtung ging auch hier mein Gedanke - aber gib doch mal ein konkretes Szenario an:
Ebene3 wird ausgewählt, dann soll das "ähnlich Pulldown" welche Werte GENAU enthalten?
Grüße Boris
AW: Die Datei ist von mir...
mir...
wenn der user ebene 3 auswählt, soll die gültigkietsliste in spalte 3 die elemente (mit dem namen in spalte b anzeigen, die zur Ebene 2 gehören...
Beispieltabelle: https://www.herber.de/bbs/user/9760.xls
Zeile 8. User wählt aus: Ebene 4, gibt namen ein und in Spalte D soll dann eine Liste erscheinen, die die Elemente enzeigt, die zu Ebene 3 gehören
mann muss wohl nebenher eine sverweis liste führen, die die elemente spaltenweise in abhängigkeit von ihrer Ebenenzugehörigkeit führt (auf die mann dann die Gültigkeitsbezüge legen kann) So wie in der automarkendatei...
wir können auch telefonieren, wenn du magst - is mir wirklich wichtig..
Gruß und danke schonmal.
Matthias
Anzeige
AW: Die Datei ist von mir...
mir...
Hi Matthias,
langsam fällt der Groschen.
Sind die Ebenen wirklich mit den Namen "Ebene 1", "Ebene 2" etc. versehen?
Wieviele Ebenen kann es geben?
Seh ich es richtig, dass die Ebenen willkürlich ausgewählt werden können (also könnte man jetzt in Zeile 9 wieder z.B. Ebene 1 auswählen)?
Wie groß ist deine tatsächliche Datei? Ist der Aufbau dort identisch mit deinem Beispiel?
Grüße Boris
Zusatzfrage:
Boris
Hi Matthias,
...und seh ich es richtig, dass die Pulldowns in Spalte D eigentlich die Elementnamen und nicht - wie in deiner Datei - die Ebenen beinhalten sollten?
Also bei z.B. Auswahl Ebene 4 sollen die Elementnamen der Ebene 3 zu Auswahl gestellt werden - demnach 4. und 5. Element?
Grüße Boris
Anzeige
AW: Zusatzfrage:
Matthias
ja, das ist richtig..
also der user soll auswählen können, welchem element das neue untergeordnet ist. um dieses menü aber zu erstellen, muss auf die ebenen geachtet werden...
diese formatierung dient dann aber nur der ansicht... die letztendliche liste sieht anders aus( siehe mein neuer beitrag)
Gruß,
Matthias
AW: Die Datei ist von mir...
mir...
ah, ich sehe langsam wirds klarer..
ja, die auswahl ist willkürlich (da auch oberebenen eingefügt werden müssen
besser als "EbenE !2 WÄRE TATSÄCHLICH aber nur die NUmmer, aber dass kriegt man ja auch per =Rechts() hin dann. .
ziel ist halt, dass ich letztendlich eine liste kriege die so aussieht:
nummer des Eintrags (= zeilennummer)
Elementname
nummer (Zeilennummer) des übergeordneten Eintrages
also so (daten nur als. Bsp, in wirklichkeit geht es um Konzernstrukturen/Organigramme):
(punkte nur zur Formatierung)
no. text root-nummer
1 berlin..........................0
2 Brandenburg..............0
3 Berlin-Mitte.................1
5 berlin-Lichtenberg......1
6 Frankfurt Oder.............2
7 Eisenhüttenstadt........2
8 Eberswalde.................2
9 Bernau........................2
10 Sachsen...................0
11 Leipzig....................10
weil mit dieser struktur dann nur in Acces eingelesen werden kann..
Umfang der Datei ungefähr 200 einträge (besser 300)..
und um dem user halt das hinzufügen von einträgen zu vereinfachen wollte ich das ganze mit der gültigkeits auswahlliste vereinfachen..
problem hat auch, dass neue einträge (neue elemente in den auswallisten hinzugefügt werden müssen (damit z.B. wenn ich zeile
12 Mecklenburg-Vorpommern 0
eingebe
möglich ist, bei
13 Rostock
dann eien Auswahliste zu haben, die schon Meckpomm als Stamm enthält...
So, jetz hab ich alles erklärt, ich hoffe es ist halbwegs verständlich, sonst mache ich das nochmal...
Danke schonmal für die Mühe, hab ja gesagt, is ein bissl komplexer

Anzeige
Hier mal eine VBA-freie Lösung...
Boris
Hi Matthias,
...wobei ich leider momentan keine Beispieldateien anhängen kann.
Bezogen auf deine letzte Beispieldatei - mal Schritt für Schritt.
1.)
Schreibe in F1, G1, H1, I1 usw. die Begriffe:
"Ebene 0", "Ebene 1" usw. usw. (beachte unbedingt das Leerzeichen zw. Ebene und der Zahl!).
2.)
Schreibe in F2 die Array-Formel:
{=WENN(ZEILE($A1)&gtZÄHLENWENN($B:$B;F$1);"";INDEX($C:$C;KKLEINSTE(WENN($B$1:$B$100=F$1;ZEILE($1:$100));ZEILE($A1))))}
und kopier sie sowohl weit genug runter als auch nach rechts.
3.)
Schreibe in E2 die Formel
=RECHTS(B2;SUMMENPRODUKT(N(ISTZAHL(RECHTS(B2;SPALTE($1:$1))*1))))*1
und kopier sie runter (stör dich nicht an #WERT!, wenn in Spalte B noch nix steht).
Das ist der Einfachheit halber eine Hilfsspalte, die die Ebenenzahl ausliest.
4.)
Selektiere D2 - dann Daten-Gültigkeit-Zulassen: Liste.
Dort diese Formel hinterlegen:
=BEREICH.VERSCHIEBEN($E$2;;VERGLEICH("Ebene "&E2-1;$F$1:$IV$1;);SUMME(N(BEREICH.VERSCHIEBEN($E$2;;VERGLEICH("Ebene "&E2-1;$F$1:$IV$1;);100)&lt&gt"")))
D2 anschließend runterkopieren.
Schau dir das Ergebnis mal an und gib Bescheid, ob das so in etwa hinkommt und ob du das nachvollziehen kannst.
Grüße Boris
Anzeige
AW: Hier mal eine VBA-freie Lösung...
Matthias
moment, das implementieren dauert n bissl.. :)
Aber danke schonmal...
meld mich gleich....
AW: Hier mal eine VBA-freie Lösung...
Matthias
Hm, ne so richtig noch nicht.. aber in den grundzügen ist es richtig... ich hab sie mal angehängt....
irgendwie stimmt die auflistung rechts nicht (hab ich die formeln falsch gezogen?
und beim einfügen der formel in D2 meldet er "Excel untersucht gerade einen fehler"...
die "'ZAHL!"en sind auch beunruhigend... hm...
https://www.herber.de/bbs/user/9765.xls
aber von den grundzügen her sind "wir" auf dem richtigen weg...
Anzeige
Ich hatte ARRAY-Formel geschrieben...
Boris
Hi Matthias,
...und einfach mal vorausgesetzt, dass du weisst, wie man die eingibt :p
Also bei dieser Formel (in D2)
{=WENN(ZEILE($A1)&gtZÄHLENWENN($B:$B;F$1);"";INDEX($C:$C;KKLEINSTE(WENN($B$1:$B$100=F$1;ZEILE($1:$100));ZEILE($A1))))}
handelt es sich um eine Array-Formel.
Die {geschweiften Klammern} außenrum werden nicht mit eingegeben, sondern automatisch erzeugt durch Abschluss der Formeleingabe mit Strg-Shift-Enter (anstatt Enter allein).
Dann klappt´s auch ;-)
Grüße Boris
AW: Ich hatte ARRAY-Formel geschrieben...
Herbert
Muss man die Klammern nicht mit ctr + shift + enter erzeugen?
Gruß Herbert
Wo ist der Unterschied? oT
Boris
Grüße Boris
Anzeige
AW: Wo ist der Unterschied? oT
Herbert
strg + umsch + eingabe
ctr + shift + enter
Gruß Herbert
Ist halt Denglisch...
Boris
Hi Herbert,
...aber bisher hat jeder Strg-Shift-Enter verstanden ;-) (schreibe das nicht zum ersten mal).
Grüße Boris
AW: Ist halt Denglisch...
herbert
controllo + spostamento + entri
Herbert
AW: Ich hatte ARRAY-Formel geschrieben...
Matthias
Okay, ne die Array Formelstruktur kenn ich wirklich nicht...
Öhm... irgendwie wills trotzdem noch nicht so richtig... ein bezug muss falsch sein (eine zeile zu hoch oder so)
bitte datei ansehen:
https://www.herber.de/bbs/user/9774.xls
Wenn ich in Zell B3 "Ebene 1", habe fehlt Berlin in der Aufzählung rechts (Spalte F)
Stelle ich B3 dann auf "Ebene 0", erscheint zwar Berlin in Spalte F, dafür fehlt Mitte in Spalte G
..? Ich kann mich da leider nicht so eindenken, dass ich das selbsthinkriege.... sind doch ganz schün konplex die formeln... :/
Anzeige
Ich melde mich später wieder...
Boris
Hi Matthias,
...möglicherweise auch erst heute Abend.
Ich bau dir dann mal die Datei und lad sie hoch.
Kann es denn sein (wie in deiner letzten Datei), dass zwar Ebenen in Spalte B eingegeben werden, aber gleichzeitig Spalte C leer bleibt?
Grüße Boris
AW: Ich melde mich später wieder...
Matthias
Kann schon, aber nur für den Zeitraum der eingabe, ich würde ja vielleicht noch ein Element zur Liste von B hinzufügen: " " oder leer, wenn dann dort nichts anderes ausgewählt ist, könnten auch dir Formeln ab Spalte F "" sein... (=WENN B..="";"";FORMEL)
tut mir leid, dass ich da nicht so groß mitdenken kann, aber das sind ne menge formeln auf einmal... habs zwar versucht, aber so richtig..
würde mich freuen, wenn wir das hinkriegen könnten.
Dann schönen Tag erstmal und bis später dann...
Matthias
Anzeige
AW: Ich melde mich später wieder...
Matthias
Hallo & guten Morgen Boris,
hoffe du bist fit für ein paar Versuche an der xls-Tabelle. :)
Würd mich freuen, wenn wir das heute fortsetzen könnten...
Herzlichen Dank und bis später,
Matthias
AW: Ich melde mich später wieder...
Boris
Hi Matthias,
sorry - gestern Abend hatte ich dann doch keine Zeit mehr.
Wenn deine Daten das zulassen, dann lad doch mal die Originalmappe auf den Server, dann bedarf es anschließend auch keiner Anpassungen mehr der - zugegeben - etwas komplexeren Formeln ;-)
Grüße Boris
AW: Ich melde mich später wieder...
Matthias
Guten Morgen Boris,
kein Problem!!!
Hab jetzt eine neue Bspdatei mit Bsp.daten erstellt. genau so soll es aussehen...
ziel wäre dann später, Spalten B,D und F in Access einlesen zu können (Struktur: Nummer element, Element, nummer übergeordnetes element)
https://www.herber.de/bbs/user/9799.xls
Ist das soweit ausreichend erfklärt? User geben neue Elemente ein.
Per VBA kann man ja sicherstellen, dass bei beendigung bzw. speicherung der datei keine zeile existiert, die zwar eine Ebene, aber kein element aufweist (fehlerquelle).
Ist das irgendwie verständlich?
Gruß und megaherzlichen Dank schon mal,
Matthias
So - jetzt aber...
Boris
Hi Matthias,
Schritt-für-Schritt:
Arrayformel in I6:
{=WENN(ZEILE($A1)&gtZÄHLENWENN($C:$C;I$5);"";INDEX($D:$D;KKLEINSTE(WENN($C$1:$C$100=I$5;ZEILE($1:$100));ZEILE($A1))))}
Diese sowohl runter als auch nach rechts kopieren.
Das auslesen der Ebenenzahl in der Hilfsspalte sparen wir uns, da es mit der bestehenden Struktur einfacher geht.
Gültigkeit für E6 - Liste:
=BEREICH.VERSCHIEBEN($H$6;;VERGLEICH("Ebene "&TEIL($C6;FINDEN(" ";$C6);9)-1;$I$5:$IV$5;);SUMME(N(BEREICH.VERSCHIEBEN($H$6;;VERGLEICH("Ebene "&TEIL($C6;FINDEN(" ";$C6);9)-1;$I$5:$IV$5;);100)&lt&gt"")))
und runterkopieren.
Achtung: Ich hab das jetzt mal nur für maximal 100 gemacht. Wenn es mehr sein können, dann muss das noch angepasst / erweitert werden - allerdings nur soweit, wie gerade eben nötig, da die Arrays sehr performancefressend sind.
Haut das jetzt so hin?
Grüße Boris
AW: So - jetzt aber...
Matthias
Ich teste das gleich mal. Aber die "Hilfsspalte" ist leider keine Hilfsspalte, da ich diese dringeng benötig um die Treeview Funktion in Acces zu realisieren, sprich in Spalte F MUSS die Nummer des übergeordneten Elements stehen.
vielleicht realisierbar damit:
VBA Code, der bei Elementnameneingabe immer die nummer des elementes davor schreibt, also nach der eingabe wird aus "berlin" z.B. "1....Berlin" (punkte sind leerzeichen)
spalte f liest sich dann aus spalte e per (links(E...;3) die nummer aus?!?!
Achso, ich brauche leider mehr als 100 zeilen, 300 wären gut, 400 sicher... und wenn es performance frisst....
wie mache ich das dann?
und wie lösen wir das prob mit spalte F?
danke, ich guck jetz ma ob die formeln so passen bei mir.
Es funzt!!!
Matthias
Klasse!!!!!!!
Das funktioniert!
muss mir echt noch mal ein paar formelchen bei excel anguggn... gibt ja echt ne menge genialer tricks anscheinend
Jetz fehlt mir nur noch das Ding mit der Spalte F und ich stimm eine Lobeshymne an :)
AW: Es funzt!!!
Boris
Hi Matthias,
versteh ich es richtig, dass die "Nummer des übergeordneten Elements" (Spalte F) gleich der Nummer der "Ebene des Elements" (Spalte C) minus 1 ist?
Und bei "Ebene 0" in Spalte C ist eben kein übergeordnetes Element vorhanden?
Wenn ja - dann Formel in F6 und runterkopieren:
=WENN(C6="Ebene 0";"";TEIL(C6;FINDEN(" ";C6);9)-1)
Die anderen Formeln bis 500 erweitert - ArrayFormel in I6 (und dann wieder nach rechts und nach unten kopieren):
{=WENN(ZEILE($A1)&gtZÄHLENWENN($C:$C;I$5);"";INDEX($D:$D;KKLEINSTE(WENN($C$1:$C$500=I$5;ZEILE($1:$500));ZEILE($A1))))}
Und die Formel bei Daten-Gültigkeit-Liste - bezogen auf E6:
=BEREICH.VERSCHIEBEN($H$6;;VERGLEICH("Ebene "&TEIL($C6;FINDEN(" ";$C6);9)-1;$I$5:$IV$5;);SUMME(N(BEREICH.VERSCHIEBEN($H$6;;VERGLEICH("Ebene "&TEIL($C6;FINDEN(" ";$C6);9)-1;$I$5:$IV$5;);500)&lt&gt"")))
und dann wieder runterkopieren.
O.K.?
Grüße Boris
AW: Es funzt!!!
Matthias
danke für das anpassen erstmal.
Nein, leider aber doch noch nicht ok, nummer des übergeordneten elements ist die nummeer (spalte "Elementnummer") die das übergeordnete element hat also:
nummer................ebene des e............name des e..........übergeordnetes e...... nummer des ü. e....
1..Ebene0..Brandenburg..___...___
2..Ebene1..Frankfurt oder..brandenburg..1
3..Ebene1..Bernau..Brandenburg..1
4..Ebene2..Mühlenstraße 3, Bernau..Bernau..3
also so, dass die letzte spalte ("nummer des übergeordneten elements") immer anzeigt, an welcher position das übergeordnete Element steht...
Matthias
Dann so...
Boris
Hi Matthias,
in F6 und runterkopieren:
=WENN(C6="Ebene 0";"";VERGLEICH("Ebene "&TEIL(C6;FINDEN(" ";C6);9)-1;C$6:C$500;))
Ergibt im Ergebnis immer die Zahl des ersten Vorkommens der übergeordneten Ebene.
Grüße Boris
AW: Dann so...
Matthias
und wenn nicht das erste vorkommen sondern das eindeutige gefordert ist? :)
denn es kann passieren, dass ein element vom namen her mehrfach auftaucht (z.b. "Kaufhalle" oder so)...
sieht du da auch eine möglichkeit?
meine idee war ja das verketten des elementnamens mit der zeilennummer (via VBA) und dann in spalte f dass abtrennen der spaltennummer.... hm?
AW: Dann so...
Matthias
aber die formel funktioniert so auch nicht richtig... irgendwie zeigt er relativ wilkürlich nur 1en udn 3en an... :(
Ich kapier´s nicht...
Boris
Hi Matthias,
...gib doch mal bitte ein konkretes Beispiel, was für ein Ergebnis du erwartest. Am besten lädst du die Datei dazu nochmal hoch und trägst in Spalte F MANUELL ein, was denn bei der gegebenen Auswahl drinstehen soll.
Grüße Boris
AW: Ich kapier´s nicht...
Matthias
Hallo Boris,
war für 4 Tage verreist, mal ein bissl Ostsee genießen.
Anbei nochmal die Datei.
https://www.herber.de/bbs/user/10001.zip (gezippt weil sonst größer 300kb)
Also in Spalte F soll zu dem Objekt in Spalte E, das ja das übergeordnete Objekt von Spalte D ist, immer die Zeilennummer stehen, in der übergeordnete Objekt (also das aus E) in der Liste in Spalte D auftaucht.
Also wenn z.B. Berlin an Nummer 6 erst auftaucht (also spalte:
6|Berlin| |
dann ist das Unterobjekt (z.B. nummer 12) wie folgt zu beziffern:
12|"Bezirk"|Berlin|6(!)
Die Nummer in spalte F zeigt also an, in welcher zeile das übergeordnete Objekt zu finden ist...
Danke für das erneute Reindenken schonmal...
Gruß,
Matthias
Finally... Gelöst!!!!!
Matthias
Habs jetzt gelöst!
Mit einer hilfsspalte, die die eingabe des elements mit der nummer in der liste verkettet,
später wird dann aus dem ausgewählten element diese max. 3 stellige kombination von zahlen wieder per =Links(XXX;3) rausgezogen.
https://www.herber.de/bbs/user/10004.zip
(einfach relevante Spalten einblenden)
Einziger Nachteil: in der Auswahlliste in Spalte F sieht der User halt die Elementnummern, aber damit muss man dann wohl leben. :)
Jedenfalls vielen Dank für die Hilfe! Hat mich echt super weitergebracht!!!
Hab noch viel zu lernen in Excel seh ich grad, aber bin ja noch jung und lernfähig...
Beste Grüße aus der Hauptstadt und weiterhin gutes Gelingen,
Matthias
Räusper, doch es funzt
Matthias
sorry für die aufruhr,
in einer ausgeblendeten spalte sollte man vielleicht auch die verkettenformel über zeile 10 hinaus ziehen....
Sorry, lag an mir.
Matthias
AW: Ich hatte ARRAY-Formel geschrieben...
Matthias
mir fällt auf: es wird immer der eintrag nicht angezeigt, der nach einem ebenenwechsel steht, also wenn in zeile 10 z.B. Ebene 3 ist, und in Zeile 11 dann Ebene 4, wird dieser Eintrag nicht angezeigt....?!

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige