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

Formeln und VBA

Formeln und VBA
23.02.2003 14:15:54
Bastian
Hallo Leute,
habe folgendes Problem und hoffe auf Hilfe:
In Spalte H sollen ab Zeile 3 Geburtstage eingegeben werden. Nach Eingabe soll per VBA das Alter z.B. nach Formel
=WENN(G3="";"";DATEDIF(G3;HEUTE();"y")) ermittelt werden und das Ergebnis in Spalte I ab Zeile 3 ausgegeben werden.
In Spalte K und L soll analog mit Eingabe Eintrittsdatum die Zugehörigkeit in Jahren eingetragen werden.

Besten Dank

Bastian

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Formeln und VBA
23.02.2003 15:36:47
Klaus-Dieter
Hallo Bastian,

hier das Makro:


Sub jahre()
z = 3
Do While Cells(z, 8) <> ""
Cells(z, 9) = Format(Now(), "YYYY") - (1900 + Format(Right(Cells(z, 8), 2), "0"))
If Right(Cells(z, 11), 2) < 10 Then
Cells(z, 12) = Format(Now(), "YYYY") - (2000 + Format(Right(Cells(z, 11), 2), "0"))
Else: Cells(z, 12) = Format(Now(), "YYYY") - (1900 + Format(Right(Cells(z, 11), 2), "0"))
End If
z = z + 1
Loop
End Sub

Code eingefügt mit: Excel Code Jeanie

So sieht das Ergebnis aus:


Anzeige
Re: Formeln und VBA
23.02.2003 17:23:04
Bastian
Hakko Klaus-Dieter,

besten Dank für Deine Hilfe. Klappt soweit prima. Ich möchte Dich noch um zwei Verfeinerungen bitten.
1. Es wäre schön wenn das Makro direkt bei Eingabe rechnet, nicht über Schaltfläche.
2. Das Makro soll auch funktionieren wenn eine Leerzeile dabei ist.

Vielleicht kannst Du nochmal helfen.

Danke

Bastian

Re: Formeln und VBA
23.02.2003 18:05:26
Klaus-Dieter
Hallo Bastian,

kein Problem:

Re: Formeln und VBA
23.02.2003 20:28:36
Bastian
Hallo Klaus-Dieter,

aller herzlichsten Dank, klappt prima.

Habe natürlich Deine Seite abgeklickt und festgestellt, dass Du Dich u.a. mit dem Thema Kalender beschäftigst.

Habe auch einen Kalender aus anderen Vorlagen so angepasst, dass der Kalender je Bundesland die gesetzlichen festen und beweglichen Feiertage anzeigt. Hätte dazu eine winzige Frage.
"Wie kann ich die Anzahl der Feiertage in einem bestimmten Zeitraum ermitteln, die nicht auf einen Arbeitstag fallen"?
Über Farben zählen geht's bei bedingter Formatierung leider nicht.
Habe Dir die Datei gemailt. Vielleicht kannst Du Dir das mal anschauen und mir eine Nachricht zukommen lassen.

Wäre toll.

Gruß Bastian

Anzeige
Re: Nachfrage
23.02.2003 22:26:58
Bastian
Hallo Klaus-Dieter,

habe jetzt erst bemerkt, dass ein kleiner Schönheitsfehler dabei ist. Bei o.g. Makro ist man nach einem Geburtstag bis zum nächsten Geburtstag schon ein Jahr älter. Kann man das ändern?

Gruß Bastian

Re: Nachfrage
23.02.2003 22:40:02
Klaus-Dieter
Hallo Bastian,

nun, das ist klar, weil die Berechnung auf vollen Jahreszahlen basiert. Man kann das natürlich auf Tage, oder Monate herunterbrechen und da dann wieder auf Jahre (mit Kommastellen?) heraufrechnen. Auch Rundungen sind möglich. Da muß man dann genau wissen was gewünscht ist. Die Vorgestellte Lösung benutze ich z.B. Für das Berechnen von Altersklassen im Wettkampfsport, da ist das genau so erforderlich.
Schreib mal was Du brauchst, dann bekomme ich das schon hin.

Gruß Klaus-Dieter
Klaus-Dieter's Excel und VBA Seite

Anzeige
Re: Nachfrage
23.02.2003 23:58:18
Bastian
Hallo Klaus-Dieter,

will nicht nerven, aber brauch leider in beiden Spalen "Jahre" die Jahresangaben, die bis zum jeweiligen Stichtag gelten.
Also wer am 23.02.82 geboren ist, ist bis zum 22.02.03 - 22 Jahre alt. Gleiches gilt für die andere Spalte.

Gruß Bastian

Re: Nachfrage
26.02.2003 22:07:05
Klaus-Dieter
Hallo Bastian,

hier der angepasste Quelltext:


Sub jahre_genau()
Dim z%, r%, sj%
' Berechnet einen Zeitraum, zum Beispiel das Alter
' bezogen auf den aktuellen Tag als Stichtag
' Klaus-Dieter Oppermann
On Error Resume Next ' Fehler durch leere Zellen überspringen
z = Range("A65536").End(xlUp).Row ' Letzte Zeile ermitteln
For r = 2 To z ' Schleifenstart für Berechnung
sj = 0 ' Variable für Schaltage auf Null
' Anzahl der Schalttage ermitteln
For s = Format(Cells(r, 1), "yyyy") To Format(Now(), "yyyy") ' Schleifenstart
If s Mod 4 = 0 Then ' wenn Jahreszahl durch vier teilbar ...
sj = sj + 1 ' ... dann variable hochzählen
End If ' Ende der Bedingung
Next s ' Ende der Schleife (s)
' Anzahl der Jahre ausgeben
Cells(r, 2) = Int((DateDiff("d", Format(Cells(r, 1), _
"DD.MM.YYYY"), Now) - sj) / 365) ' Anzahl der Tage minus Schalttage durch 365
Next r ' Ende der Schleife (r)
End Sub
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige