Hamza Raya: Separate numbers

Hallo Leute

Function Hochkommata(Zahl)

--------------------------------------------------------------------
Zahl = RTrim(Zahl)

If Len(Zahl) > 3 AND Len(Zahl) =< 6 Then
 Hochkommata = Replace(Zahl, Right(Zahl, 3), "'" & Right(Zahl, 3))
End If

If Len(Zahl) > 6 Then
 Hochkommata = Replace(Zahl, Right(Zahl, 6), "'" & Right(Zahl, 6))
 Hochkommata = Replace(Zahl, Right(Zahl, 3), "'" & Right(Zahl, 3))
End If
End Function
--------------------------------------------------------------------

Diese Funktion soll nach den ersten drei und nach den ersten sechs Zeichen von rechts ein Hochkommata setzen. Das ganze funktioniert eigentlich. Hier einige Beispiele von Eingaben und Ausgaben

10000000 = 1'000'0000 <- Falsch
1123000 = 1123'000 <- Falsch
23000 = 23'000 <- Richtig
10000 = 1'0000 <- Falsch
123000 = 123'000 <- Richtig

Meine Frage: Warum diese Fehler ?
Andere Frage: Gibt es irgendeine Funktion im VB-Script um Zahlen zu separieren ?

  1. Hi,

    »...

    Diese Funktion soll nach den ersten drei und nach den ersten sechs Zeichen von rechts ein Hochkommata setzen. Das ganze funktioniert eigentlich. Hier einige Beispiele von Eingaben und Ausgaben

    ...

    Die Ergebnisse sind wirklich etwas ominoes. Aber ich wuerde zuerstmal stat RTrim  nur trim(Zahl) machen. Ausserdem scheint mir das zweite If-statement etwas komisch, also statt dessen:

    --------------------------------------------------------------------
       Zahl = Trim(Zahl)

    If Len(Zahl) > 3 AND Len(Zahl) =< 6 Then
     Hochkommata = Replace(Zahl, Right(Zahl, 3), "'" & Right(Zahl, 3))
    End If

    If Len(Zahl) > 6 Then
     Hochkommata = Replace(Zahl, Right(Zahl, 6), "'" & Right(Zahl, 6))

    Hochkommata = Replace(Hochkommata , Right(Hochkommata , 3), "'" & Right(Hochkommata , 3))

    End If
    End Function

    Vielleicht bringt's ja was.

    Gruss, Melanie

    1. Ausserdem scheint mir das zweite If-statement etwas komisch, also statt dessen:

      Hochkommata = Replace(Hochkommata , Right(Hochkommata , 3), "'" & Right(Hochkommata , 3))

      Den Fehler habe ich übersehen

      Vielleicht bringt's ja was.

      Leider nicht. Aber es hat irgendwas mit diesen Nullen zu tun denn ich habe die Funktion mit einigen Zahlen gefüttert und folgendes kam dabei raus

      1234500 = 1'234'500
      1234000 = 1'234'000
      1230000 = 1'23'0000
      1200000 = 1'2'00000

      Gibt es denn keine Funktion dafür um die Zahlen in Zahlenblöcke aufzuteilen ?

      Gruss & Danke
      Hamza

      1. Hi, hallo

        nimm die Zahl, kehre sie als String um und füge in einer Schleife jeweils 3 Stellen in ein dynamisches Array bis Länge verbleibende Zeichenkette < Gruppierungslänge ist (Abbruchbedingung für die Schleife ... kann man auch anders formulieren.

        Das Array machst du mit einem Join(array,deinTrennzeichen) zu einem String und kehrst diesen wieder um, fertig!

        War doch nicht so schwer ... dieser Funktion (Eingabe= Long,Int,String ; Ausgabe = String) gibst du einen treffenden Namen und dann hast du deine Funktion.

        Mehr verrat ich dir aber nicht dazu.

        Tschau, tschüß,
        Frank

        1. Hallo

          Mehr verrat ich dir aber nicht dazu.

          Nicht zufällig den Code auf Lage :-) ich bin ein fauler unerfahrener Coder...

          Gruss