3k Aufrufe
Gefragt in Tabellenkalkulation von little-key Mitglied (333 Punkte)
Hallo User,

habe ein Problem mit meiner aufwendigen Excel-Tabelle, die aus 54 Blättern besteht.

Benötige eine Abfrage:

In Zelle BH21 steht ein frei definierbares Datum.
In Zelle BJ21 steht diese Martixformel (mit Schweifklammern natürlich)
=SUMME(ZÄHLENWENN(INDIREKT("KW"&ZEILE($1:$53)&"!D21:AB22");"UA"))
und zählt die "UA"

Nun möchte ich eine Prüfung:

Wenn in Zelle BH21 "Datum erreicht" und UA läuft danach noch in Zelle BJ21 auf, dann Function UrlaubZ21(), sonst leeres Feld. z.B. WENN(???;UrlaubZ21();" ")
Die genannte Function ist schon definiert.

Na hoffentlich kann man mich verstehen.

Danke Mario

9 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Mario,

das mit dem Zählen von UA habe ich verstanden, aber diesen Satz
Wenn in Zelle BH21 "Datum erreicht" und UA läuft danach noch in Zelle BJ21 auf, dann Function UrlaubZ21(), sonst leeres Feld. z.B. WENN(???;UrlaubZ21();" ")

müsstest Du schon mal erläutern.

Anhand einer Beispieldatei würde man Dein Vorhaben bestimmt besser erkennen.

Was meinst Du damit?
Die genannte Function ist schon definiert


Gruss
Rainer
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
Hallo Rainer,

danke erstmal für den Einsatz.

Ich versuchs mal so:
BH21: Datum definierbar
BJ21: o.g. Matrixformel

BH BJ BL

20

21 31.03.2010 7 0 (so bis zum 31.03.)

21 31.03.2010 7 ?? (nach dem 31.03.)

?? - Hier jetzt Meldung über meine VBA-Function:
Es ist kein UA mehr verfügbar, Datum überschritten.

Ich dachte an so eine WENN-Funktion....., wenn BH21 größer 31.03. und BJ7 größer 0, dann Aufruf VBA-Code (Funktion UrlaubZ21() ), wenn BH21 kleiner gleich 31.03. dann 0.

Mario
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
Nun hat sich auch noch alles verschoben.

BH21 = 31.03.2010
BJ21 = 7
BL21 = 0 (bis 31.03.)
BL21 = ?? (nach dem 31.03.)

?? - Hier jetzt Meldung über meine VBA-Function:
Es ist kein UA mehr verfügbar, Datum überschritten.

Ich dachte an so eine WENN-Funktion....., wenn BH21 größer 31.03. und BJ7 größer 0, dann Aufruf VBA-Code (Funktion UrlaubZ21() ), wenn BH21 kleiner gleich 31.03. dann 0.

Mario
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
Heute ist der Wurm drin,

nicht BJ7 größer 0, sondern BJ21.
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Mario,

da ich trotzdem nicht verstehe, was Du meinst, steige ich an dieser Stelle aus, es sei denn Du lieferst doch noch eine Beispieldatei.

Gruss
Rainer
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
Gut, die Datei senden wäre kompliziert. 6,5 Mb und einen Auszug entsprechend erstellen sehr umständlich.

Andere Frage dazu, mit der ich mein Problem auch lösen könnte:

In Zelle A1 ist Datum 31.03.2010 eingetragen (veränderbar).
In Zelle A2 die Zahl 10.

Wenn die Zelle A2 einen anderen Wert bekommt, der nach dem 31.03.2010 (laut Zelle A1) liegt, soll eine MsgBox-Meldung kommen:
z. B. Datum überschritten, bitte ändern.

Welche Möglichkeit gibt es hier?

Mario
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
Wei keiner eine Lösung für das untere Problem?
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Mario,

ehrlich gesagt, waren Deine Beschreibungen bislang auch mehr als undurchsichtig was Du wann genau haben wolltest.

Um Dir aber auf Deine untere Frage überhaupt eine Antwort zu geben, kann ich Dir leider nur beschränkt helfen.

Du möchtest ja das bei Veränderung der Zelle A1 und A2 eine Msgbox erscheint, wenn das neue Datum in A1 - das vorherige überschreitet.

An der Stelle muss ich dann passen.

Hier aber ein kleines Makro, falls Du Dich damit abfinden könntest, dass Du das alte Datum in meinem Makro in Zelle A1 steht und in B1 das neue Datum.

Auf die Zellen A1 und B1 wird eine entsprechende Abfrage gemacht ob das Datum in A1 kleiner wie in B1 ist.
Falls B1 größer ist, dann Msgbox mit Deinem Text.

Mehr kann ich Dir leider nicht anbieten, da meine VBA-Kenntnisse leider auch sehr begrenzt sind.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Cells(1, 1).Value < Cells(1, 2) Then
MsgBox ("größeres Datum")
Range("b1").Select
Else
End If
End Sub


Einen Schönheitsfehler hat es jedoch auch noch, da die Msgbox zweimal angeklickt werden muss, bevor die Korrektur des Datums erfolgt. Sorry...

In diesem Sinne... have a nice Day... Gruß Helmut
0 Punkte
Beantwortet von little-key Mitglied (333 Punkte)
Hallo Helmut,

herzlichen Dank für Dein Hilfe-Angebot.

Es ist sicherlich immer schwierig seine vollzogenen Gedanken anderen mitzuteilen, da man ja selbst weiß was man will.
Letztendlich versteht man nicht, warum andere das nicht verstehen.

Das Datum vergleichen, ist ja auch nicht das Problem. Ist ja auch mit einer Formel in der Zelle lösbar:

=WENN(A1>=HEUTE();Message();" ")

Das heißt, wenn das Datum in A1 noch größer ist als das aktuelle Datum kommt die Meldung ansonsten bleibt das Feld leer.

Die Message() ist eine VBA-Code-Function:

Function Messages()
MsgBox "Datum überschritten.", vbInformation, "Falsche Eingabe"
End Function

Aber trotzdem Danke, komme glaube jetzt auch so weiter.

Viele Grüße Mario
...