Avatar billede larsgrau Forsker
09. december 2013 - 19:09 Der er 9 kommentarer og
1 løsning

To tegn

Hej

Jeg har lavet / fundet på nettet dette modul til excel:
Function Convert_Degree(Decimal_Deg) As Variant
    With Application
        'Set degree to Integer of Argument Passed
        Degrees = Int(Decimal_Deg)
        'Set minutes to 60 times the number to the right
        'of the decimal for the variable Decimal_Deg
        Minutes = (Decimal_Deg - Degrees) * 60
        'Set seconds to 60 times the number to the right of the
        'decimal for the variable Minute
        Seconds = Format(((Minutes - Int(Minutes)) * 60), "0")
        'Returns the Result of degree conversion
      '(for example, 10.46 = 10~ 27  ' 36")
        Convert_Degree = "N" & Degrees & " " & Int(Minutes) & " " _
            & Seconds & ".0"
    End With
End Function

Det virker også, men jeg vil gerne hvis den kan sætte N ind hvis det er et positivt tal og S hvis det er et negativt

Det jeg prøvet at omregne
35,171819 det skal blive til N35 10 19.0
-35,171819 det skal blive til S35 10 19.0

Kan det lade sig gøre ??
09. december 2013 - 19:15 #1
Prøv

Function Convert_Degree(Decimal_Deg) As Variant
    With Application
        'Set degree to Integer of Argument Passed
        Degrees = Int(Decimal_Deg)
        'Set minutes to 60 times the number to the right
        'of the decimal for the variable Decimal_Deg
        Minutes = (Decimal_Deg - Degrees) * 60
        'Set seconds to 60 times the number to the right of the
        'decimal for the variable Minute
        Seconds = Format(((Minutes - Int(Minutes)) * 60), "0")
        'Returns the Result of degree conversion
      '(for example, 10.46 = 10~ 27  ' 36")
        Convert_Degree = iif(Decimal_Deg<0,"S","N") & Degrees & " " & Int(Minutes) & " " _
            & Seconds & ".0"
    End With
End Function
Avatar billede larsgrau Forsker
09. december 2013 - 19:42 #2
det virker, men når man sætter - foran regner den ikke rigtigt mere
Avatar billede larsgrau Forsker
09. december 2013 - 19:44 #3
findes der en måde hvor den se bort fra - når den regner
09. december 2013 - 19:46 #4
Abs giver dig tallet uden -
Degrees = Int(abs(Decimal_Deg))
Avatar billede larsgrau Forsker
09. december 2013 - 20:03 #5
Hvis jeg sætter det ind bliver:
-35,171819 til S35 -4211 41,0
og det skal blive S35 10 19,0

Under mig
09. december 2013 - 20:06 #6
Du skal nok også bruge det her

  Minutes = (abs(Decimal_Deg) - Degrees) * 60
Avatar billede larsgrau Forsker
09. december 2013 - 20:10 #7
Nu har jeg lavet den sådan har
Function Convert_Degree(Decimal_Deg) As Variant
    With Application
        'Set degree to Integer of Argument Passed
        Degrees = Int(Abs(Decimal_Deg))
        'Set minutes to 60 times the number to the right
        'of the decimal for the variable Decimal_Deg
        Minutes = (Abs(Decimal_Deg - Degrees)) * 60
        'Set seconds to 60 times the number to the right of the
        'decimal for the variable Minute
        Seconds = Format(Abs(((Minutes - Int(Minutes)) * 60)), "0")
        'Returns the Result of degree conversion
      '(for example, 10.46 = 10~ 27  ' 36")
        Convert_Degree = IIf(Decimal_Deg < 0, "S", "N") & Degrees & " " & Int(Minutes) & " " _
            & Seconds & ".0"
    End With
End Function

Men den dumme maskine skriver stadig S35 4210 19.0 hvor den skal skrive S35 10 19.0
09. december 2013 - 20:17 #8
Skrev jeg ikke

  Minutes = (Abs(Decimal_Deg) - Degrees) * 60
   
??

Og du behøver ikke abs her

  Seconds = Format(((Minutes - Int(Minutes) * 60)), "0")
Avatar billede larsgrau Forsker
09. december 2013 - 20:25 #9
Så virker den takker mange gange, skriv svar så du kan så point


Function Convert_Degree(Decimal_Deg) As Variant
    With Application
        'Set degree to Integer of Argument Passed
        Degrees = Int(Abs(Decimal_Deg))
        'Set minutes to 60 times the number to the right
        'of the decimal for the variable Decimal_Deg
        Minutes = (Abs(Decimal_Deg) - Degrees) * 60
        'Set seconds to 60 times the number to the right of the
        'decimal for the variable Minute
        Seconds = Format(((Abs(Minutes - Int(Minutes)) * 60)), "0")
        'Returns the Result of degree conversion
      '(for example, 10.46 = 10~ 27  ' 36")
        Convert_Degree = IIf(Decimal_Deg < 0, "S", "N") & Degrees & " " & Int(Minutes) & " " _
            & Seconds & ".0"
    End With
End Function
09. december 2013 - 20:30 #10
Altid dejligt at kunne hjælpe :)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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