Avatar billede mitrine Nybegynder
20. juni 2005 - 10:19 Der er 9 kommentarer og
1 løsning

Læse de første 2 ciffere efter kommaet i excel

Hejsa
Jeg har lavet en makro i excel, som har en række tal som den deler op i grupper og summere.
Jeg vil dog gerne have den kun læser på de første 2 karaktere efter kommaet når den skal bestemme om resultatet går i nul.
Avatar billede sjh Nybegynder
20. juni 2005 - 10:36 #1
jeg ved ikke om excel kan bruge split() men prøv..

Dim arrSplit() As String
Dim strNumber As String

  strNumber = "123,456"

  arrSplit = Split(strNumber, ",")
  If UBound(arrSplit) > 0 Then
    MsgBox Left$(arrSplit(1), 2)
      Else
    MsgBox "Der er ikke noget koma i."
  End If
Avatar billede martin_moth Mester
20. juni 2005 - 10:38 #2
Hvad du mener med "går i nul" ved jeg ikke, men kan du ikke bruge round-funktionen?

Altså afrunde alle tal til 2 decimaler før du summerer

a = 2.3492342
b=round(a,2)
b indeholder nu 2.35
Avatar billede martin_moth Mester
20. juni 2005 - 10:45 #3
Som det fremgår af de to svar du har fået, har vi forstået spørgsmålet på hver vores måde. Har du ikke fået svar nok, så uddyb hvad du mener.
Avatar billede martin_moth Mester
21. juni 2005 - 14:29 #4
haloo?
Avatar billede sjh Nybegynder
21. juni 2005 - 17:50 #5
martin_moth > vi skal nok ikke regne med at mitrine ser det før ekspertens mailsystem er oppe og køre igen.. jeg får nemlig heller ikke nogle mails her fra.
Avatar billede martin_moth Mester
22. juni 2005 - 06:58 #6
ok
Avatar billede mitrine Nybegynder
23. juni 2005 - 10:12 #7
Hej med jer, ganske korrekt jeg har først fået mails´ne lige nu.
Uddybning:
Jeg indlæser en fil med konto oplysninger, posterne består af delposter i både plus og minus, og er fordelt på ejendomsnumre. Hvert ejendoms nummer skal gå i "0" hvorfor at makroen går ind og indsætter mellemrum mellem hvert ejendomsnummer, hvorefter den tæller sammen, dog ikke med funktionen sum, da der er et variabelt antal af poster for hvert ejendomsnummer. så den tæller sammen ved at sige:

Range("A4").Select
    Beløb1 = ActiveCell.Offset(0, 2)
    Beløb2 = ActiveCell.Offset(0, 3)
   
tæller = 0

Do While Selection <> Empty
    If tæller = 0 Then
        FinalB1 = Beløb1
        FinalB2 = Beløb2
    End If
   
    If tæller <> 0 Then
        FinalB1 = FinalB1 + Beløb1
        FinalB2 = FinalB2 + Beløb2
    End If
   
    ActiveCell.Offset(1, 0).Select
   
    If Selection = Empty Then
        ActiveCell.Offset(0, 2).Value = FinalB1
        ActiveCell.Offset(0, 3).Value = FinalB2
       
    'slette procedure hvis FinalB1 og FinalB2 er lig 0
    If FinalB1 = 0 And FinalB2 = 0 Then
        Range(Selection, Selection.End(xlUp)).Select
        Range(Selection, Selection.End(xlUp)).Select
   
    Set tbl = ActiveCell.CurrentRegion
    tbl.Offset(-1, 0).Resize(tbl.Rows.Count + 1, tbl.Columns.Count + 20).Select

    Selection.Delete Shift:=xlUp
    ActiveCell.Offset(0, 0).Select
   
    FinalB1 = 0
    FinalB2 = 0
   
    End If
   
    If FinalB1 <> 0 Or FinalB2 <> 0 Then
        ActiveCell.Offset(1, 0).Select
    End If
    End If
   
    tæller = tæller + 1
   
    If Selection = Empty Then
        tæller = 0
        ActiveCell.Offset(1, 0).Select
    End If
   
   
    Beløb1 = ActiveCell.Offset(0, 2)
    Beløb2 = ActiveCell.Offset(0, 3)

Loop

DVS. den bruger en tæller og ligger beløbne sammen en efter en, hvis resultatet er 0
bruger den tælleren til at markere posterne og slette dem.

MIT PROBLEM:
Er at hvis tallet differ i 11 decimal vil posterne ikke blive slettet, hvilket jeg gerne vil have den til,så spørgsmålet er: kan jeg, når den tjekker om posterne giver nul, få den til kun at tjekke på om beløbet er 0,00 istedet for 0,00000000000001?
Håber det var nok ellers må du/i jo bare spørge igen:-)

Mitrine
Avatar billede martin_moth Mester
23. juni 2005 - 13:12 #8
Du kan jo afrunde til 2 decimaler
Se svar 20/06-2005 10:38:09
Avatar billede martin_moth Mester
23. juni 2005 - 13:15 #9
Har du ikke fået svaret 20/06-2005 10:38:09?

a = 0.00000000000001
b=round(a,2)
b indeholder nu 0.00

Dvs, hvis du vil tjekke om et tal A er nul (med 2 decimaler) gør du følgende.

A = 0.000001
If round(A,2) = 0 then
  msgbox "Tallet " & a & " har værdien nul hvis det afrundes til 2 decimaler"
end if
Avatar billede mitrine Nybegynder
23. juni 2005 - 14:09 #10
Hej Martin
Joo Det har det vist:-)ups....Havde vist bare misforstået det.
Nå men det virker! det er det vigtigste.
Og du har fået dine point.
Ha en god dag og hold humøret oppe.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester