Hilfegesuch /w Validierung über mehrere Zeilen

Hallo liebe WWW-Gemeinde!

Es hat sich für mich eine weitere Schwierigkeit aufgetan und hoffentlich kann mir in diesem Fall auch jemand von Euch weiterhelfen.

Ich bin dabei ein recht umfangreiches Sheet zu erstellen. In der Vergangenheit wurde dieses nicht all zu gut gepflegt und die Prüfroutinen die vorhanden waren, um fehlenden Informationen zu ermitteln, haben nicht alle relevanten Fälle abgedeckt. Dies bin ich gerade dabei zu ändern.

In dem Sheet gibt es eine Arbeitsmappe (Check Menu) in der alle wichtigen Informationen zu einzelnen Werten in allen anderen Arbeitsmappen überprüft werden. Sollten Informationen fehlen, wird dies in dieser Arbeitsmappe angezeigt.

Basis ist ein fünfstelliger Code, nach dem ich in den jeweiligen Arbeitsmappen suche. In den meisten Fällen gibt es zu jedem Code auch nur eine Zeile mit Informationen, die es zu validieren gilt. Es wird überprüft, ob in einem fest vordefinierten Bereich Flags gesetzt sind oder nicht.

Anbei die Funktion die fehlerfrei funktioniert, wenn in der zu überprüfenden Arbeitsmappe nur eine Zeile mit Informationen zu dem betroffenen Code steht:

=WENN(ANZAHL2(INDIREKT("‚Program Flows‘!L"&VERGLEICH(A1;‚Program Flows‘!A:A;0)&":AP"&VERGLEICH(A1;‚Program Flows‘!A:A;0)))=0;„incomplete“;„complete“)

Erklärung:
In der Arbeitsmappe ‚Program Flows‘ wird nach dem Wert aus Zelle A1 gesucht. In der ermittelten Zeile in der Arbeitsmappe ‚Program Flows‘ werden die Spalten L bis AP überprüft. Ist hier kein Wert zu finden (Ergebnis = 0) wird der Wert ‚incomplete‘ ausgegeben. Ansonsten (Ergebnis >= 1) wird der Wer ‚complete‘ ausgegeben.

So weit so gut…

Problem:
Nun kann es aber vorkommen, dass es zu dem zu Grunde liegenden Code aus Zelle A1 in der Arbeitsmappe ‚Program Flows‘ mehrere Zeilen gibt in denen dazugehörige Informationen stehen. In diesen Fällen steht in der Spalt A nicht in jeder Zeile der betreffende Code, sondern die betroffenen Zeilen in Spalte A sind verbunden worden.

Beipsiel Arbeitsmappe ‚Program Flows‘

Sp1 Sp2 Sp3 Sp4 Sp5 Sp6 Sp7 Sp8
Zeile 1 AA BB CC DD EE FF GG
Zeile 2
Zeile 3 X X X
Zeile 4 EA390 X X X
Zeile 5 X X
Zeile 6

In Zeile 2 und 6 sind keine Flags in den Spalten 2 bis 8 gesetzt. Dies soll dazu führen, dass in der Arbeitsmappe ‚Check Menu‘ ein ‚incomplete‘ angezeigt wird.

Da in diesem Beispiel Zeile 2 keine Flags in Spalten 2 bis 8 gesetzt sind, würde auch ein ‚incomplete‘ angezeigt werden. Würde man jetzt die Flags in Zeile 2 nachpflegen, in Zeile 6 aber nicht, würde jedoch ein ‚complete‘ angezeigt werden, was nicht richtig ist. Die Funktion die ich derzeit verwende, schaut immer nur auf die erste Zeile und ignoriert die nachstehenden, die jedoch fachlich mit dazu gehören.

Frage / gewünschte Lösung
Wie kann ich alle zu einem Code dazugehörigen Zeilen (in diesem Beispiel für den Bereich Zeile2/Sp2:Zeile6/Sp8) validieren, damit in der Arbeitsmappe ‚Check Menu‘ das richtige Ergebnis angezeigt wird?

Viele Dank im Voraus für Eure Hilfe!

Gruß
Raffael

Hallo Raffael!

Ich hab dir eine Formel gebastelt, die dein Problem lösen dürfte.

=WENN(ISTLEER(B2);A1;B2)

Diese musst du in A2 eingeben, wenn dein Anfangswert in A1 steht. Sie prüft, ob B2 leer ist. Dann wird der Wert der oberen Zelle, also A1, übernommen, sonst übernimmt er den Wert der Zelle B2. Sobald also in Spalte B eine neue verbundene Zelle beginnt, ändert sich der Wert in Spalte A. Deshalb müsstest du mit dieser Formel prüfen können, welche Zeilen leer sind.

Gruß Alex

Hallo Alex,

ich denke verstanden zu haben worauf Du hinaus möchtest. Auch wenn ich gerade noch ein paar gedankliche Schwierigkeiten habe Dein Beispiel in eine / eine passende Funktion einzubauen, dürfte es meiner Vermutung nach daran scheitern, dass man keine Schleife in eine Funktion in Excel einbauen kann. Denn es kann zu jedem Code in der Arbeitsmappe ‚Program Flows‘ n Zeilen geben und jede müsste überprüft werden, ob es mind. eine belegte Zelle (in den Spalten 2 bis 8) gibt. Ich habe die starke Vermutung, dass das nur durch ein VBA Script zu lösen ist und davon habe ich absolut keine Ahnung.

Sollte ich Deinen Ansatz eventl. missverstanden haben und es doch funktionieren sollen, dann wäre ich für einen leichtes auf die Füße treten bzw. von der Leitung stumpen dankbar :wink:

Danke & Gruß
Raffael

Ich hab dir eine Formel gebastelt, die dein Problem lösen
dürfte.

=WENN(ISTLEER(B2);A1;B2)

Diese musst du in A2 eingeben, wenn dein Anfangswert in A1
steht. Sie prüft, ob B2 leer ist. Dann wird der Wert der
oberen Zelle, also A1, übernommen, sonst übernimmt er den Wert
der Zelle B2. Sobald also in Spalte B eine neue verbundene
Zelle beginnt, ändert sich der Wert in Spalte A. Deshalb
müsstest du mit dieser Formel prüfen können, welche Zeilen
leer sind.

Gruß Alex

Hallo Raffael,

die Zellen mit gleichen Wert zusammenzuführen ist genauso unsauber, wenn nur in der zweiten Zeile den Wert eintragen würde.

Beispiel Arbeitsmappe ‚Program Flows‘

A B C D E F G H I J
1 AA BB CC DD EE FF GG
2
3 X X X
4 EA390 X X X
5 X X
6

Das dürfte aber auch Deine Lösung sein. In I2 trägst Du den Wert von I1 rein, wenn A2 leer ansonsten A2 (=wenn(A2="";I1;A2)). In J2 trägst Du die Zähl-Funktion für die jeweilige Zeile (=ZÄHLENWENN(B2:H2;"=X") ein. Diese kannst Du wieder gewohnt abfragen. Notfalls musst Du diese in einer Zeile zusammenfassen (Tipp: Multiplikation).

MfG Georg V.

P.S.: Nein, VBA braucht man mit Sicherheit nicht.

Hallo Georg,

vielen dank für Deine Hilfestellung. Deine Idee hat mich weitergebraucht, wenn auch nicht ganz auf dem Weg den ich mir vorgestellt habe. Ich habe das Ganze jetzt über zwei zusätzliche Spalten in der Tabelle gelöst. Denn eigentlich wollte ich das vermeiden und die Abfrage / Kontrolle nur über eine einzelne Funktion lösen.

Nochmals Danke!

Gruß
Raffael

Hallo Raffael,

die Zellen mit gleichen Wert zusammenzuführen ist genauso
unsauber, wenn nur in der zweiten Zeile den Wert eintragen
würde.

Beispiel Arbeitsmappe ‚Program Flows‘

A B C D E F G H I J
1 AA BB CC DD EE FF GG
2
3 X X X
4 EA390 X X X
5 X X
6

Das dürfte aber auch Deine Lösung sein. In I2 trägst Du den
Wert von I1 rein, wenn A2 leer ansonsten A2
(=wenn(A2="";I1;A2)). In J2 trägst Du die Zähl-Funktion für
die jeweilige Zeile (=ZÄHLENWENN(B2:H2;"=X") ein. Diese kannst
Du wieder gewohnt abfragen. Notfalls musst Du diese in einer
Zeile zusammenfassen (Tipp: Multiplikation).