Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Layout Füllen
#1
Hallo zusammen,

ich bin auf der Suche nach Hilfe für mein Problem.

Ich habe eine Tabelle in der Für LKW Auflieger und Container vermerkt werden soll an welchem Tor diese abgestellt wurden und welchen Status sie haben.
In der angehängten Tabelle ist das der Reiter "Eingabe" - das Tor an dem der Auflieger steht wird durch ein X markiert.

Ich möchte nun erreichen das Excel erkennt in welcher Zeile z.b das X in Tor 1 ist.
Anschließend soll Excel die Infos aus Spalte A, B, C und D zusammenfügen.
Diese Info soll dann in dem blau hinterlegten Feld des entsprechenden Tores in dem Reiter Layout Auftauchen

Kann mir hiermit jemand helfen ?

Eine Alternative Idee für meine Tabelle ist das der Reiter "Eingabe" enfällt und die Infos direkt in das Layout eingetragen.
Damit es dann Benutzerfreundlich ist wäre es gut wenn der Mitarbeiter einfach zb den Kasten verschieben könnte ohne das sich die blau markierten Felder mitverschieben.

Falls ich die Antwort auf die Frage im Forum selbst schon hätte finden können tuts mir Leid aber wie so oft bei Excel Sorgen weiß ich nicht mal wie die Frage lautet :D

Vielen dank
.xlsx   Mappe1.xlsx (Größe: 91,51 KB / Downloads: 5)
Antworten Top
#2
Hallo,

du hast Excel 365, daher kann man das sicherlich viel eleganter lösen als mein Vorschlag.
Trotzdem hier meine Idee, die auf Index und Vergleich setzt.
Im Tabellenblatt Layout müssten am besten die Tore genauso benannt werden wie in der Eingabe.
Aktuell steht im Layout "1" und in der Eingabe "Tor 1"
Habe ich bei Tor 1 in meiner Beispieldatei angepasst.
Dann in FI25 folgende Formel einsetzen:

Code:
=INDEX(Eingabe!$A:$A;VERGLEICH("x";INDEX(Eingabe!$F:$BU;0;VERGLEICH(FI38;Eingabe!$F$1:$BU$1; 0)); 0))&" / "&INDEX(Eingabe!$A:$A;VERGLEICH("x";INDEX(Eingabe!$F:$BU;0;VERGLEICH(FI38;Eingabe!$F$1:$BU$1; 0)); 0))&" / "&INDEX(Eingabe!$C:$C;VERGLEICH("x";INDEX(Eingabe!$F:$BU;0;VERGLEICH(FI38;Eingabe!$F$1:$BU$1; 0)); 0))&" / "&INDEX(Eingabe!$D:$D;VERGLEICH("x";INDEX(Eingabe!$F:$BU;0;VERGLEICH(FI38;Eingabe!$F$1:$BU$1; 0)); 0))

Es setzt die Treffer aus Spalte A, B, C, D zusammengesetzt hintereinandern.
Ziemlich lang und unübersichtlich, muss ich gestehen. Aber siehe meine Bemerkung oben.


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 94,62 KB / Downloads: 4)
Antworten Top
#3
Hallo T...,

in der Anlage mein Vorschlag (eingerichtet für die Tore 1-24). Angezeigt wird der Trailer, der als letztes das Tor angefahren hat. Achtung! Ich habe deine Vorgabe ein wenig angepasst.

Code:
=WENNFEHLER(INDEX(Eingabe!$E:$E;RUNDEN(REST(AGGREGAT(14;6;(RUNDEN(Eingabe!$B$2:$B$40*1000;0)+ZEILE(Eingabe!$B$2:$B$40)%%)/(Eingabe!$F$2:$F$40=Layout!S38);1);1)*10000;0));"")


Und hier noch einiger Bemerkungen:

1. Zeiten
a) du darfst die Ankunftzeiten nicht als Texte, sondern solltest sie als Ecxel-Zeiten eintragen (habe ich für die Testdaten angepasst).
b) Wenn du die Abfahrtszeiten nicht erfasst, wird ein Trailer noch angezeigt, wenn er schon lange abgefahren ist. Wenn das Tor nicht wieder angefahren wurde, kann ein Trailer auch an zwei Toren angezeigt werden. Ausserdem wird die Formel bei Erfassung einer Abfahrtszeit einfacher.

2. Kennung der Positionen
Diese sollten in beiden Blättern gleich sein, damit die Formel sie vergleichen kann. (habe ich für die Tore 1-24 angepasst)

3. Eingabe der Position
Warum willst du die Eingabe über eine X in einer Matrix realisieren. Ein Eintrag der Position ist doch einfacher als die Suche der richtigen Spalte (die Matrix habe ich in eine Spalte zusammengeführt).

4. Ich habe in der Ausgabe Zeilenumbrüche eingefügt.


Angehängte Dateien
.xlsx   Mappe1(5).xlsx (Größe: 94,28 KB / Downloads: 3)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#4
Hi,

(26.05.2023, 12:05)el-rettev schrieb: du hast Excel 365, daher kann man das sicherlich viel eleganter lösen als mein Vorschlag.

Hier mal die Idee von el-rettev in xl365 weiterentwickelt.

Zunächst ersetzen wir den immer gleichen VERGLEICH() mit Hilfe von LET()
Code:
=LET(z;VERGLEICH("x";INDEX(Eingabe!$F:$BU;0;VERGLEICH(FI38;Eingabe!$F$1:$BU$1;0));0);INDEX(Eingabe!$A:$A;z;0)&" / "&INDEX(Eingabe!$B:$B;z)&" / "&INDEX(Eingabe!$C:$C;z)&" / "&INDEX(Eingabe!$D:$D;z))
Dann nehmen wir statt der Verkettung mit &" / " die TEXTVERKETTEN()-Funktion
Code:
=LET(z;VERGLEICH("x";INDEX(Eingabe!$F:$BU;0;VERGLEICH(FI38;Eingabe!$F$1:$BU$1;0));0);TEXTVERKETTEN(" / ";;INDEX(Eingabe!$A:$D;z;0)))
Jetzt ermitteln wir die korrekte Spalte bzw. deren Einträge nicht mit INDEX(...VERGLEICH()) sondern mit FILTER()
Code:
=LET(z;VERGLEICH("x";FILTER(Eingabe!$F:$BU;Eingabe!$F$1:$BU$1=FI38);0);TEXTVERKETTEN(" / ";;INDEX(Eingabe!$A:$D;z;0)))
Und zum Schluß ersetzen wir den noch verbliebenen INDEX(VERGLEICH()) zur Ermittlung der eigentlichen Ausgabe durch einen weiteren FILTER() und lassen das nun überflüssige LET() wieder verschwinden
Code:
=TEXTVERKETTEN(" / ";;FILTER(Eingabe!$A:$D;FILTER(Eingabe!$F:$BU;Eingabe!$F$1:$BU$1=FI38)="x"))

Wenn nur der unterste Wert ausgegeben werden soll:
Code:
=TEXTVERKETTEN(" / ";;ÜBERNEHMEN(FILTER(Eingabe!$A:$D;FILTER(Eingabe!$F:$BU;Eingabe!$F$1:$BU$1=FI38)="x");-1))
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#5
Hallo zusammen,

hier ein kurzes Danke, eure Antworten haben mir sehr geholfen.
Funktioniert und wird demnächst in der Lagerhalle getestet :D
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste