Quersumme Datum
#11
(06.12.2017, 14:26)chris-ka schrieb: Hi,

warum auch immer :)

{=WENN(REST(SUMME(--TEIL(TEXT(A1;"JJJJMMTT");ZEILE(1:8);1));11);SUMME(--TEIL(TEXT(SUMME(--TEIL(TEXT(A1;"JJJJMMTT");ZEILE(1:8);1));"00");ZEILE(1:2);1));SUMME(--TEIL(TEXT(A1;"JJJJMMTT");ZEILE(1:8);1)))}

wobei die {} NICHT eingegeben, sondern Formel wird mit Strg + Umschalt + Enter abschließen.

Fantastisch, genau so! Herzlichen Dank!
Top
#12
(06.12.2017, 14:31)Jockel schrieb: Hallo, dann geht's aber noch weiter..:

11 > Quersumme = 2

Wie im Ausgangsthread..: Bsp.: 01.01.1992 = 23 = 5

Ich brauch das hier zur Berechnung von Lebenszahlen als Teil der Numerologie. Die 11, die 22 und die 33 sind in der Numerologie sogenannte Meisterzahlen, die als einzige nicht weiter reduziert und unverändert beibehalten werden. Eigentlich auch die 44, die ist mir bloß noch nicht untergekommen.
Wer's mal ausprobieren möchte: http://numerologie.in
Top
#13
(06.12.2017, 15:54)chris-ka schrieb: Hi,

@ Jörg, bei 11 soll ja nicht mehr reduziert werden ;)
anbei eine UDF mit Rekursion auf einstellig inkl. der Ausnahmen

Code:
Option Explicit
Function Quers(ByVal Zahl As String) As Long
Dim i As Integer
For i = 1 To Len(Zahl)
    Quers = Quers + CLng(Mid(Zahl, i, 1))
Next
Select Case Quers
    Case 11, 22, 33
        Exit Function
    Case Is > 9
        Quers = Quers(Quers)
End Select
End Function
'Aufruf der Funktion im Tabellenbaltt =QuerSu(A1) 'wenn in A1 dein datum steht
Function QuerSu(myrange As Range) As Long
    QuerSu = Quers(Format(myrange.Value, "yyyymmdd"))
End Function

Oh, toll, wie verwende ich denn das?
Gibt es denn die Möglichkeit, die Formel zu "kopieren", sodass ich das A1 nicht jedes Mal gegen A2, A3, etc. austauschen muss?
Top
#14
Hallo Ines
 
Die Formel von Chris bringt aber nicht immer das richtige Ergebnis.
Teste einmal 05.07.1998 oder 29.06.2009 nur so als Beispiel von vielen möglichen Daten.
Ein anderes Problem ergibt sich auch zum Beispiel beim 17.08.1999.
Da ist die Quersumme 44

Da rechnet seine UDF schon viel besser. Fehler  gibt es da nur anfangs 1900

Gruss Sepp
[-] Folgende(r) 1 Nutzer sagt Danke an Josef B für diesen Beitrag:
  • Ines
Top
#15
(06.12.2017, 19:18)Josef B schrieb: Hallo Ines
 
Die Formel von Chris bringt aber nicht immer das richtige Ergebnis.
Teste einmal 05.07.1998 oder 29.06.2009 nur so als Beispiel von vielen möglichen Daten.
Ein anderes Problem ergibt sich auch zum Beispiel beim 17.08.1999.
Da ist die Quersumme 44

Da rechnet seine UDF schon viel besser. Fehler  gibt es da nur anfangs 1900

Gruss Sepp
Oh, danke! 
Was mache ich denn mit einer UDF?  :92:
Top
#16
Hallo Ines

 

Zitat:Was mache ich denn mit einer UDF?

Das kann dir Chris besser erklären
Ich habe dir hier eine Lösung mit Formel erstellt.
Die Spalte B dient als Hilfsspate, die Ergebnisse dann in Spalte C
Die Formeln kannst du so einfach nach unten kopieren

Tabelle1

  " />
ABC
117.08.1999448
204.01.19993333
Formeln der Tabelle
ZelleFormel
B1=SUMMENPRODUKT(TEIL(TEXT(A1;"TTMMJJJJ");ZEILE($1:$8);1)*1)
C1=WENN(UND(REST(B1;11)=0;B1<>44);B1;WENN(SUMME(--TEIL(B1&0;{1;2};1))=11;11;REST(B1-1;9)+1))

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

 
Gruss Sepp
[-] Folgende(r) 1 Nutzer sagt Danke an Josef B für diesen Beitrag:
  • Ines
Top
#17
(06.12.2017, 21:35)Josef B schrieb: Hallo Ines

Die Formeln kannst du so einfach nach unten kopieren
 
Gruss Sepp

Das klappt richtig gut! Vielen Dank! :D
Top
#18
Hallo Ines,

die UDF ist auch kopierbar ;)
@ Sepp das mit den Daten vor dem 01.03.1900 ist jetzt für mich erklärbar.
Da es ja keinen 29.02.1900 gegeben hat wird in VBA der 28.02 genommen.... darum sind bei der UDF andere Ergebnisse herausgekommen.
(War mir bis dato auch nicht bewusst!)
Ich habe die UDF angepasst, dass es nun auch konform zur Formellösung ist.

Anbei noch ein Video wie die UDF eingesetzt werden kann.
https://www.youtube.com/watch?v=i2lIhpN9-WY

Datei:

.xlsm   Quersumme_Udf.xlsm (Größe: 15,21 KB / Downloads: 0)

Code:
Code:
Option Explicit
Function Quers(ByVal Zahl As String) As Long
Dim i As Integer

For i = 1 To Len(Zahl)
    Quers = Quers + CLng(Mid(Zahl, i, 1))
Next
Select Case Quers
    Case 11, 22, 33
        Exit Function
    Case Is > 9
        Quers = Quers(Quers)
End Select
End Function
'Aufruf der Funktion im Tabellenbaltt =QuerSu(A1) 'wenn in A1 dein datum steht
Function QuerSu(myrange As Range) As Long
    Dim z As Integer
    If myrange.Value <= 60 Then z = 1
    QuerSu = Quers(Format(myrange.Value + z, "yyyymmdd"))
End Function
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Top
#19
Hallo Chris
 
Das ist wieder einmal typisch Excel. VBA rechnet anders als die Formeln.
Aber ich denke, wir müssen mit diesem Schaltjahrfehler leben.
Das Ganze ist  auch nicht so tragisch, 1900 liegt ja auch schon ein paar Jahre zurück. [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
[color=#000000][font=Calibri] 

[size=large]Gruss Sepp
Top


Gehe zu:


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