Excel Beibehaltung des Alters & automatische Berechnung des Alters?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo, hier eine weitere Antwort von mir, da man in Kommetare keine Bilder einfügen kann und ich meine erste Antwort nicht mehr verändern/ergänzen kann...

Ich habe hier mal auf die Schnelle ein Beispiel gebaut:

Bild zum Beitrag

Die rote Hinterlegung wandert für jede Person immer in den entsprechenden Bereich der Tabelle, weil da in allen drei Spalten jeweils eine bedingte Formatierung hinterlegt ist, die das aktuelle Jahr mit dem "Von - Bis" Jahreszahlen vergleicht.

Ich hoffe, das hilft Dir von der Idee her weiter.

Das aktuelle Datum wird anhand einer Formel immer aktuell sein, die Geburtsdaten werden zusammen mit den Personendaten erfasst. Der Rest ist anhand von Formeln berechnet. Du musst also nur den Namen und das Geburtsdatum eingeben so wie die Gehälter in den jeweiligen Altersstufen (wenn die anhand einer Formel berechenbar sind, kannst Du da die zusätzlichen Stufen ab 50 und ab 60 ja auch noch berechnen lassen).

Ich habe mir bei der Altersberechnung jetzt erspart da Formeln zu bauen, die das tagesgenau ausrechnen (anhand des exakten Geburtsdatums) und habe mich einfach auf das Jahr beschränkt um das Prinzip zu zeigen.

 - (Microsoft Excel, Excel-Formel, VBA Excel)

KayaB42 
Fragesteller
 28.10.2020, 15:08

Danke das ist sehr sehr ausführlich und gut erklärt. Vielen lieben Dank für deine Bemühungen so mache ich das vermutlich auch! Liebe Grüße :)

3

Ich habe ja auch schon eine Nachfrage gestellt.

Deine Formel rechnet immer das aktuelle Alter aus. Wenn Du also heute, in einem Jahr, in zehn Jahren die Excel-Datei öffnest, dann wird dort immer das zu dem Zeitpunkt gerade aktuelle Alter angezeigt.

Jetzt vermute ich mal, dass Du mehrere Dateien für eine Person anlegen möchtest (z.B. eine Datei pro Jahr) und dass Du möchtest, das dort immer das zu dem Zeitpunkt gerade aktuelle Alter der Person in der Datei erhalten bleibt? Also so, dass dort immer die gleich Zahl steht, egal wann die Datei danach geöffnet wird (heute, in einem Jahr, in zehn Jahren)?

In dem Fall würde ich tatsächlich eine manuelle Eingabe des Alters verwenden, ist das Einfachste.

Man kann ja trotzdem irgendwo das errechnete Feld mit dem aktuellen Alter einblenden aber das für dieses Formular relevante Alter, das sich nicht ändern soll muss dann eben per Hand eingegeben werden. So bleibt sie fest als Zahl in dem jeweiligen Feld.


KayaB42 
Fragesteller
 28.10.2020, 09:05

Es gibt 3-6 Tabellen mit unterschiedlichen Engeltsummen, da sich das jedes Jahr verändert. Es geht darum, dass in einer Tabelle mit 50 Jahren Zuschüsse berechnet werden müssen und dann in 2023 oder so mit dem neuen alter neue Zuschüsse berechnet werden. Es ist so, dass die Funktion für die Berechnung des Alters schon drin war. Das Alter der Person ist momentan 50, aber sobald man in 2 Jahren in die Tabelle reinschaut wird sich das Alter nochmals aktualisieren und somit hat man dann die Berechnungen von vor 2 Jahren nicht mehr. Das Alter in der alten Tabelle aktualisiert sich dann auch. Verständlich?

1
Waldmensch70  28.10.2020, 10:03
@KayaB42

OK, ich denke schon.

Ich würde dann wie folgt vorgehen:

  1. Irgendwo ein Eingabefeld für das Geburtsdatum der Person.
  2. Ein Feld, dass das aktuelle Datum anzeigt mit "=heute()".
  3. Entsprechende Spalten in Excel, wo dann berechnet wird ab welchen Jahr die Zuschüsse anfallen (Geburtsjahr + 50 oder so) und die betreffenden Zuschläge berechnet werden. Das kann man ja für alle Zuschlagsstufen machen, unabhängig davon, ob sie bereits für die Person gelten.
  4. Um zu sehen, welcher Bereich (Spalte) für die Person gerade gültig ist (aufgrund des aktuellen Alters) mit einer bedingten Formatierung (anhand einer Formel, die das aktuelle Datum mit dem Geburtsdatum vergleicht) die richtige Spalte farblich hervorheben.
2

Wenn du etwas fixieren willst, kannst du die betreffenden Zellen auf sich selbst kopieren und beim Einfügen die Option wählen, nur die Werte einzufügen.

Entweder berechnet sich etwas anhand einer Formel oder der Zellinhalt ist fix. Eine Halbautomation gibt es für Zellen nicht.

Okey, wenn du viel Zeit hast, könntest du dich in VBA einarbeiten.


Suboptimierer  28.10.2020, 08:37

Das Variable in deiner Formel ist HEUTE. Du könntest etwas mehr Transparenz einbringen, indem du HEUTE() in eine eigene Zelle auslagerst. Da, wo du das Alter fixieren möchtest, markierst du die Zelle und drückst Strg+.
Da, wo das Alter dynamisch errechnet werden soll, lässt du HEUTE() in der Zelle stehen.

2
Suboptimierer  28.10.2020, 08:40

Noch ein Hinweis: Du kannst die automatische Anwendung von Formeln deaktivieren. Vielleicht ist das die Lösung für dich.

Formeln → Berechnung → Berechnungsoptionen → Manuell

0

Damit ich ein Bild einfügen kann eine weitere Antwort von mir.

Mit diesem VBA Makro kannst du die Formeln einer Spalte entfernen und nur den Wert stehen lassen:

Sub DatumFixieren()

Dim zeile
Dim spalte

spalte = 1 ' 1 Steht für A

'das i zählt die Zeilen bis zum Ende der Spalte
For zeile = 1 To Cells(Rows.Count, spalte).End(xlUp).Row

    'Falls die Zelle eine Formel hat
    If Cells(zeile, spalte).HasFormula = True Then
        'wird sie enrsetzt durch den Wert
        Cells(zeile, spalte).Value = Cells(zeile, spalte).Value
    End If

Next

End Sub

Einfügen kannst du den Quelltext im VBA Editor den man unter Entwicklertools findet oder ALT+F11 drückt. Unter DieseArbeitsmappe in das Textfeld (Allgemein) den Code einfügen, gegebenenfalls den Quelltext anpassen auf die richtige Spalte.

Weiter gehts mit einer Schaltfläche, die Findest du auch unter Entwicklertools im Ribbon Einfügen (Kleine graue Fläche) und dann so wie im Bild die Schaltfläche mit dem Makro verbinden.

Bild zum Beitrag

Bild zum Beitrag

Aber ACHTUNG! Das entfernen der Formel führt auch dazu, dass das Alter nicht mehr automatisch berechnet wird und ist nicht umkehrbar (schon aber etwas zu kompliziert).

Woher ich das weiß:eigene Erfahrung
 - (Microsoft Excel, Excel-Formel, VBA Excel)  - (Microsoft Excel, Excel-Formel, VBA Excel)

KayaB42 
Fragesteller
 28.10.2020, 09:43

Woow, vielen Dank ! Das ist jetzt echt viel. Ich muss das mit meiner Chefin nochmals abklären, ob Sie das auch wirklich möchte oder nicht. Sonst würde ich vielleicht auch einfach eine extra Spalte anlegen und dort das aktuelle Alter immer berechnen lassen. Aber vielen lieben Dank. Ich greife drauf zurück, falls ich es anders nicht hinbekomme. Liebe Grüße & einen schönen Tag noch :)

2
geri3d  28.10.2020, 09:55
@KayaB42

Kleine Sicherheitsabfrage kann nicht schaden. Ergänzung:

Sub DatumFixieren()

If MsgBox("ACHTUNG! Datum wird fixiert", vbOKCancel, "Datum fixieren") = vbCancel Then
    Exit Sub
End If

Dim zeile
Dim spalte

spalte = 1 ' 1 Steht für A

'das i zählt die Zeilen bis zum Ende der Spalte
For zeile = 1 To Cells(Rows.Count, spalte).End(xlUp).Row

    'Falls die Zelle eine Formel hat
    If Cells(zeile, spalte).HasFormula = True Then
        'wird sie enrsetzt durch den Wert
        Cells(zeile, spalte).Value = Cells(zeile, spalte).Value
    End If

Next

End Sub
2
Suboptimierer  28.10.2020, 10:59

Super!

Vor allem faszinierend, dass folgende Zeile eine Änderung bewirkt 😅

Cells(zeile, spalte).Value = Cells(zeile, spalte).Value
1
geri3d  29.10.2020, 00:14
@Suboptimierer

Stimmt eigentlich sollte man Value in eine Zwischenvariable schreiben, dann die Formel löschen und danach den Wert setzen aber MS hat sich das anders ausgedacht.

1
Suboptimierer  29.10.2020, 08:41
@geri3d

Das was im Vergleich zu normalen Variablen ungewohnt ist, ist dass beim Schreiben in das value mehr passiert, als nur in das value zu schreiben, nämlich auch das Löschen der Formel.

1
Von Experte Suboptimierer bestätigt
zunächst mal fix bleibt und ich in der neuen Tabelle automatisch das neue Alter

Wie lange soll es fix bleiben? Den zweiten Teil des Zitates verstehe ich nicht, sozusagen in der alten Tabelle und was ist dann die neue?

Die Heute() Funktion wird sich jeden Tag ändern. Was ich mir vorstellen kann ist ein Makro das du dann ausführst, wenn du es möchtest.

Woher ich das weiß:eigene Erfahrung

KayaB42 
Fragesteller
 28.10.2020, 09:14

Es gibt 3-6 Tabellen mit unterschiedlichen Engeltsummen, da sich das jedes Jahr verändert. Es geht darum, dass in einer Tabelle mit 50 Jahren Zuschüsse berechnet werden müssen und dann in 2023 oder so mit dem neuen alter neue Zuschüsse berechnet werden. Es ist so, dass die Funktion für die Berechnung des Alters schon drin war. Das Alter der Person ist momentan 50, aber sobald man in 2 Jahren in die Tabelle reinschaut wird sich das Alter nochmals aktualisieren und somit hat man dann die Berechnungen von vor 2 Jahren nicht mehr. Das Alter in der alten Tabelle aktualisiert sich dann auch. Verständlich?

2
KayaB42 
Fragesteller
 28.10.2020, 09:15

Mit Makro kenn ich mich leider gar nicht aus. Darüber müsste ich mich informieren. Vielen lieben Dank für deine Antwort :)

1
geri3d  28.10.2020, 09:17
@KayaB42

Bei Makros kann ich dir helfen, als Programmierer sind VBA Aufgaben leicht.

0