một số hàm dùng để tính chuyển đổi , công , trừ theo độ phút giây

Liên hệ QC

xaydung20ld

Thành viên mới
Tham gia
29/7/06
Bài viết
2
Được thích
29
Trong tính toán bình sai lưới khống chế mặt bằng của bản vẽ khảo sát địa hình, cần phải tính toán, chuyển đổi ở dạng độ với độ chính xác 0.01"
Xin gửi một số hàm cần thiết, do tôi viết còn hơi lung tung , mong nhận được ý kiến
1/ hàm đổi từ dạng độ,phút,giây,%giây ( 00.00.00.00 ) sang dộ

Function Doi(Value)
giay = Val(Right$(Value, 2))
a = Right$(Value, 6)
B = Right$(Value, 3)
Phut = Val(Right$(Value, 5) - B)
Select Case Len(Value)
Case 9
Doo = Val(Left$(Value, 3))
Case 8
Doo = Val(Left$(Value, 2))
Case 7
Doo = Val(Left$(Value, 1))
End Select
Doi = Doo + (Phut / 60) + (giay / 3600)
End Function

2/ hàm cộng dạng (000.00.00.00)

Function Cong(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00"
If Vl2 = " " Then Vl2 = "000.00.00"
Giay1 = Val(Right$(Vl1, 2))
a1 = Right$(Vl1, 6)
b1 = Right$(Vl1, 3)
Phut1 = Val(Right$(Vl1, 5) - b1)
Select Case Len(Vl1)
Case 9
Doo1 = Val(Left$(Vl1, 3))
Case 8
Doo1 = Val(Left$(Vl1, 2))
Case 7
Doo1 = Val(Left$(Vl1, 1))
End Select
Giay2 = Val(Right$(Vl2, 2))
a2 = Right$(Vl2, 6)
b2 = Right$(Vl2, 3)
Phut2 = Val(Right$(Vl2, 5) - b2)
Select Case Len(Vl2)
Case 9
Doo2 = Val(Left$(Vl2, 3))
Case 8
Doo2 = Val(Left$(Vl2, 2))
Case 7
Doo2 = Val(Left$(Vl2, 1))
End Select
Doo = Doo1 + Doo2
If Doo > 360 Then
Doo = Doo - 360
End If
Phut = Phut1 + Phut2
giay = Giay1 + Giay2
While giay >= 60
giay = giay - 60
Phut = Phut + 1
Wend
While Phut >= 60
Phut = Phut - 60
Doo = Doo + 1
Wend
If Phut < 10 Then
PhutA = "0" & Trim(Str$(Phut))
If Phut = 0 Then PhutA = "00"
Else
PhutA = Str$(Phut)
End If
If giay < 10 Then
GiayA = "0" & Trim(Str$(giay))
If giay = 0 Then GiayA = "00"
Else
GiayA = Str$(giay)
End If
Cong = Trim(Str$(Doo)) & "." & Trim(PhutA) & "." & Trim(GiayA)
End Function


2/trừ dạng (00.00.00.00)

Function Tru(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00"
If Vl2 = " " Then Vl2 = "000.00.00"
Giay1 = Val(Right$(Vl1, 2))
a1 = Right$(Vl1, 6)
b1 = Right$(Vl1, 3)
Phut1 = Val(Right$(Vl1, 5) - b1)
Select Case Len(Vl1)
Case 9
Doo1 = Val(Left$(Vl1, 3))
Case 8
Doo1 = Val(Left$(Vl1, 2))
Case 7
Doo1 = Val(Left$(Vl1, 1))
End Select
Giay2 = Val(Right$(Vl2, 2))
a2 = Right$(Vl2, 6)
b2 = Right$(Vl2, 3)
Phut2 = Val(Right$(Vl2, 5) - b2)
Select Case Len(Vl2)
Case 9
Doo2 = Val(Left$(Vl2, 3))
Case 8
Doo2 = Val(Left$(Vl2, 2))
Case 7
Doo2 = Val(Left$(Vl2, 1))
End Select
If Giay2 > Giay1 Then
Giay1 = Giay1 + 60
Phut1 = Phut1 - 1
End If
giay = Giay1 - Giay2
If Phut2 > Phut1 Then
Phut1 = Phut1 + 60
Doo1 = Doo1 - 1
End If
Phut = Phut1 - Phut2
'If Doo2 > Doo1 Then
'Doo1 = Doo1 + 360
'End If
Doo = Doo1 - Doo2
While giay >= 60
giay = giay - 60
Phut = Phut + 1
Wend
While Phut >= 60
Phut = Phut - 60
Doo = Doo + 1
Wend
If Phut < 10 Then
PhutA = "0" & Trim(Str$(Phut))
If Phut = 0 Then PhutA = "00"
Else
PhutA = Str$(Phut)
End If
If giay < 10 Then
GiayA = "0" & Trim(Str$(giay))
If giay = 0 Then GiayA = "00"
Else
GiayA = Str$(giay)
End If
Tru = Trim(Str$(Doo)) & "." & Trim(PhutA) & "." & Trim(GiayA)
End Function
Function CongA(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00.00"
If Vl2 = " " Then Vl2 = "000.00.00.00"
Phanphu1 = Val(Right$(Vl1, 2))
Giay1 = Val(Right$(Vl1, 5) - Right$(Vl1, 3))
'a1 = Right$(Vl1, 6)
'b1 = Right$(Vl1, 6)
'Phut1 = Val(Right$(Vl1, 8) - Right$(Vl1, 6))
Select Case Len(Vl1)
Case 12
Doo1 = Val(Left$(Vl1, 3))
Phut1 = Val(Left$(Vl1, 6) - Left$(Vl1, 4)) * 100
Case 11
Doo1 = Val(Left$(Vl1, 2))
Phut1 = Val(Left$(Vl1, 5) - Left$(Vl1, 3)) * 100
Case 10
Doo1 = Val(Left$(Vl1, 1))
Phut1 = Val(Left$(Vl1, 4) - Left$(Vl1, 2)) * 100
End Select
Do1 = Doo1 + (Phut1 / 60) + (Giay1 / 3600) + (Phanphu1 / 360000)
Phanphu2 = Val(Right$(Vl2, 2))
Giay2 = Val(Right$(Vl2, 5) - Right$(Vl2, 3))
'a2 = Right$(Vl2, 6)
'b2 = Right$(Vl2, 6)
'Phut2 = Val(Right$(Vl2, 8) - b2)
Select Case Len(Vl2)
Case 12
Doo2 = Val(Left$(Vl2, 3))
Phut2 = Val(Left$(Vl2, 6) - Left$(Vl2, 4)) * 100
Case 11
Doo2 = Val(Left$(Vl2, 2))
Phut2 = Val(Left$(Vl2, 5) - Left$(Vl2, 3)) * 100
Case 10
Doo2 = Val(Left$(Vl2, 1))
Phut2 = Val(Left$(Vl2, 4) - Left$(Vl2, 2)) * 100
End Select
Do2 = Doo2 + (Phut2 / 60) + (Giay2 / 3600) + (Phanphu2 / 360000)
TongA = Do1 + Do2
While TongA > 360
TongA = TongA - 360
Wend
DoA = Int(TongA)
PhutA = Int((TongA - DoA) * 60)
C = (((TongA - DoA) * 60) - PhutA) * 60
GiayA = Int(C)
PhanphuA = ((C - GiayA) * 100)
PhanphuA = Round((PhanphuA), 2)
'******
Select Case PhutA
Case Is >= 10
PhutA = Str$(PhutA)
Case Is = 0
PhutA = "00"
Case Is < 10
PhutA = "0" & Trim(Str$(PhutA))
End Select
Select Case GiayA
Case Is >= 10
GiayA = Str$(GiayA)
Case Is = 0
GiayA = "00"
Case Is < 10
GiayA = "0" & Trim(Str$(GiayA))
End Select
'PhanPhuA = Format(PhanPhuA, "##")
Select Case PhanphuA
Case Is >= 10
PhanphuA = Str$(Format(PhanphuA, "##"))
Case Is = 0
PhanphuA = "00"
Case Is < 10
PhanphuA = "0" & Trim(Str$(Format(PhanphuA, "##")))
End Select
CongA = Trim(Str$(DoA)) & "." & Trim(PhutA) & "." & Trim(GiayA) & "." & Trim(PhanphuA)
End Function

3/ đội dạng độ sang (00.00.00.00)

Function DoiA(vl)
Phanphu = Val(Right$(vl, 2))
giay = Val(Right$(vl, 5) - Right$(vl, 3))
Select Case Len(vl)
Case 12
Doo = Val(Left$(vl, 3))
Phut = Val(Left$(vl, 6) - Left$(vl, 4)) * 100
Case 11
Doo = Val(Left$(vl, 2))
Phut = Val(Left$(vl, 5) - Left$(vl, 3)) * 100
Case 10
Doo = Val(Left$(vl, 1))
Phut = Val(Left$(vl, 4) - Left$(vl, 2)) * 100
End Select
DoiA = Doo + (Phut / 60) + (giay / 3600) + (Phanphu / 360000)
End Function
Function TruA(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00.00"
If Vl2 = " " Then Vl2 = "000.00.00.00"
Phanphu1 = Val(Right$(Vl1, 2))
Giay1 = Val(Right$(Vl1, 5) - Right$(Vl1, 3))
'a1 = Right$(Vl1, 6)
'b1 = Right$(Vl1, 6)
'Phut1 = Val(Right$(Vl1, 8) - Right$(Vl1, 6))
Select Case Len(Vl1)
Case 12
Doo1 = Val(Left$(Vl1, 3))
Phut1 = Val(Left$(Vl1, 6) - Left$(Vl1, 4)) * 100
Case 11
Doo1 = Val(Left$(Vl1, 2))
Phut1 = Val(Left$(Vl1, 5) - Left$(Vl1, 3)) * 100
Case 10
Doo1 = Val(Left$(Vl1, 1))
Phut1 = Val(Left$(Vl1, 4) - Left$(Vl1, 2)) * 100
End Select
Do1 = Doo1 + (Phut1 / 60) + (Giay1 / 3600) + (Phanphu1 / 360000)
Phanphu2 = Val(Right$(Vl2, 2))
Giay2 = Val(Right$(Vl2, 5) - Right$(Vl2, 3))
'a2 = Right$(Vl2, 6)
'b2 = Right$(Vl2, 6)
'Phut2 = Val(Right$(Vl2, 8) - b2)
Select Case Len(Vl2)
Case 12
Doo2 = Val(Left$(Vl2, 3))
Phut2 = Val(Left$(Vl2, 6) - Left$(Vl2, 4)) * 100
Case 11
Doo2 = Val(Left$(Vl2, 2))
Phut2 = Val(Left$(Vl2, 5) - Left$(Vl2, 3)) * 100
Case 10
Doo2 = Val(Left$(Vl2, 1))
Phut2 = Val(Left$(Vl2, 4) - Left$(Vl2, 2)) * 100
End Select
Do2 = Doo2 + (Phut2 / 60) + (Giay2 / 3600) + (Phanphu2 / 360000)
TongA = Do1 - Do2
While TongA > 360
TongA = TongA - 360
Wend
DoA = Int(TongA)
PhutA = Int((TongA - DoA) * 60)
C = (((TongA - DoA) * 60) - PhutA) * 60
GiayA = Int(C)
PhanphuA = ((C - GiayA) * 100)
PhanphuA = Round((PhanphuA), 2)
'******
Select Case PhutA
Case Is >= 10
PhutA = Str$(PhutA)
Case Is = 0
PhutA = "00"
Case Is < 10
PhutA = "0" & Trim(Str$(PhutA))
End Select
Select Case GiayA
Case Is >= 10
GiayA = Str$(GiayA)
Case Is = 0
GiayA = "00"
Case Is < 10
GiayA = "0" & Trim(Str$(GiayA))
End Select
'PhanPhuA = Format(PhanPhuA, "##")
Select Case PhanphuA
Case Is >= 10
PhanphuA = Str$(Format(PhanphuA, "##"))
Case Is = 0
PhanphuA = "00"
Case Is < 10
PhanphuA = "0" & Trim(Str$(Format(PhanphuA, "##")))
End Select
TruA = Trim(Str$(DoA)) & "." & Trim(PhutA) & "." & Trim(GiayA) & "." & Trim(PhanphuA)
End Function
 
Bạn có thể up file ví dụ lên cho dễ hiểu được không?
 
tôi cho vào code

1/ hàm đổi từ dạng độ,phút,giây,%giây ( 00.00.00.00 ) sang dộ

Function Doi(Value)
giay = Val(Right$(Value, 2))
a = Right$(Value, 6)
B = Right$(Value, 3)
Phut = Val(Right$(Value, 5) - B)
Select Case Len(Value)
Case 9
Doo = Val(Left$(Value, 3))
Case 8
Doo = Val(Left$(Value, 2))
Case 7
Doo = Val(Left$(Value, 1))
End Select
Doi = Doo + (Phut / 60) + (giay / 3600)
End Function
2/ hàm cộng dạng (000.00.00.00)
Function Cong(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00"
If Vl2 = " " Then Vl2 = "000.00.00"
Giay1 = Val(Right$(Vl1, 2))
a1 = Right$(Vl1, 6)
b1 = Right$(Vl1, 3)
Phut1 = Val(Right$(Vl1, 5) - b1)
Select Case Len(Vl1)
Case 9
Doo1 = Val(Left$(Vl1, 3))
Case 8
Doo1 = Val(Left$(Vl1, 2))
Case 7
Doo1 = Val(Left$(Vl1, 1))
End Select
Giay2 = Val(Right$(Vl2, 2))
a2 = Right$(Vl2, 6)
b2 = Right$(Vl2, 3)
Phut2 = Val(Right$(Vl2, 5) - b2)
Select Case Len(Vl2)
Case 9
Doo2 = Val(Left$(Vl2, 3))
Case 8
Doo2 = Val(Left$(Vl2, 2))
Case 7
Doo2 = Val(Left$(Vl2, 1))
End Select
Doo = Doo1 + Doo2
If Doo > 360 Then
Doo = Doo - 360
End If
Phut = Phut1 + Phut2
giay = Giay1 + Giay2
While giay >= 60
giay = giay - 60
Phut = Phut + 1
Wend
While Phut >= 60
Phut = Phut - 60
Doo = Doo + 1
Wend
If Phut < 10 Then
PhutA = "0" & Trim(Str$(Phut))
If Phut = 0 Then PhutA = "00"
Else
PhutA = Str$(Phut)
End If
If giay < 10 Then
GiayA = "0" & Trim(Str$(giay))
If giay = 0 Then GiayA = "00"
Else
GiayA = Str$(giay)
End If
Cong = Trim(Str$(Doo)) & "." & Trim(PhutA) & "." & Trim(GiayA)
End Function
2/trừ dạng (00.00.00.00)
Function Tru(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00"
If Vl2 = " " Then Vl2 = "000.00.00"
Giay1 = Val(Right$(Vl1, 2))
a1 = Right$(Vl1, 6)
b1 = Right$(Vl1, 3)
Phut1 = Val(Right$(Vl1, 5) - b1)
Select Case Len(Vl1)
Case 9
Doo1 = Val(Left$(Vl1, 3))
Case 8
Doo1 = Val(Left$(Vl1, 2))
Case 7
Doo1 = Val(Left$(Vl1, 1))
End Select
Giay2 = Val(Right$(Vl2, 2))
a2 = Right$(Vl2, 6)
b2 = Right$(Vl2, 3)
Phut2 = Val(Right$(Vl2, 5) - b2)
Select Case Len(Vl2)
Case 9
Doo2 = Val(Left$(Vl2, 3))
Case 8
Doo2 = Val(Left$(Vl2, 2))
Case 7
Doo2 = Val(Left$(Vl2, 1))
End Select
If Giay2 > Giay1 Then
Giay1 = Giay1 + 60
Phut1 = Phut1 - 1
End If
giay = Giay1 - Giay2
If Phut2 > Phut1 Then
Phut1 = Phut1 + 60
Doo1 = Doo1 - 1
End If
Phut = Phut1 - Phut2
'If Doo2 > Doo1 Then
'Doo1 = Doo1 + 360
'End If
Doo = Doo1 - Doo2
While giay >= 60
giay = giay - 60
Phut = Phut + 1
Wend
While Phut >= 60
Phut = Phut - 60
Doo = Doo + 1
Wend
If Phut < 10 Then
PhutA = "0" & Trim(Str$(Phut))
If Phut = 0 Then PhutA = "00"
Else
PhutA = Str$(Phut)
End If
If giay < 10 Then
GiayA = "0" & Trim(Str$(giay))
If giay = 0 Then GiayA = "00"
Else
GiayA = Str$(giay)
End If
Tru = Trim(Str$(Doo)) & "." & Trim(PhutA) & "." & Trim(GiayA)
End Function
Function CongA(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00.00"
If Vl2 = " " Then Vl2 = "000.00.00.00"
Phanphu1 = Val(Right$(Vl1, 2))
Giay1 = Val(Right$(Vl1, 5) - Right$(Vl1, 3))
'a1 = Right$(Vl1, 6)
'b1 = Right$(Vl1, 6)
'Phut1 = Val(Right$(Vl1, 8) - Right$(Vl1, 6))
Select Case Len(Vl1)
Case 12
Doo1 = Val(Left$(Vl1, 3))
Phut1 = Val(Left$(Vl1, 6) - Left$(Vl1, 4)) * 100
Case 11
Doo1 = Val(Left$(Vl1, 2))
Phut1 = Val(Left$(Vl1, 5) - Left$(Vl1, 3)) * 100
Case 10
Doo1 = Val(Left$(Vl1, 1))
Phut1 = Val(Left$(Vl1, 4) - Left$(Vl1, 2)) * 100
End Select
Do1 = Doo1 + (Phut1 / 60) + (Giay1 / 3600) + (Phanphu1 / 360000)
Phanphu2 = Val(Right$(Vl2, 2))
Giay2 = Val(Right$(Vl2, 5) - Right$(Vl2, 3))
'a2 = Right$(Vl2, 6)
'b2 = Right$(Vl2, 6)
'Phut2 = Val(Right$(Vl2, 8) - b2)
Select Case Len(Vl2)
Case 12
Doo2 = Val(Left$(Vl2, 3))
Phut2 = Val(Left$(Vl2, 6) - Left$(Vl2, 4)) * 100
Case 11
Doo2 = Val(Left$(Vl2, 2))
Phut2 = Val(Left$(Vl2, 5) - Left$(Vl2, 3)) * 100
Case 10
Doo2 = Val(Left$(Vl2, 1))
Phut2 = Val(Left$(Vl2, 4) - Left$(Vl2, 2)) * 100
End Select
Do2 = Doo2 + (Phut2 / 60) + (Giay2 / 3600) + (Phanphu2 / 360000)
TongA = Do1 + Do2
While TongA > 360
TongA = TongA - 360
Wend
DoA = Int(TongA)
PhutA = Int((TongA - DoA) * 60)
C = (((TongA - DoA) * 60) - PhutA) * 60
GiayA = Int(C)
PhanphuA = ((C - GiayA) * 100)
PhanphuA = Round((PhanphuA), 2)
'******
Select Case PhutA
Case Is >= 10
PhutA = Str$(PhutA)
Case Is = 0
PhutA = "00"
Case Is < 10
PhutA = "0" & Trim(Str$(PhutA))
End Select
Select Case GiayA
Case Is >= 10
GiayA = Str$(GiayA)
Case Is = 0
GiayA = "00"
Case Is < 10
GiayA = "0" & Trim(Str$(GiayA))
End Select
'PhanPhuA = Format(PhanPhuA, "##")
Select Case PhanphuA
Case Is >= 10
PhanphuA = Str$(Format(PhanphuA, "##"))
Case Is = 0
PhanphuA = "00"
Case Is < 10
PhanphuA = "0" & Trim(Str$(Format(PhanphuA, "##")))
End Select
CongA = Trim(Str$(DoA)) & "." & Trim(PhutA) & "." & Trim(GiayA) & "." & Trim(PhanphuA)
End Function

3/ đội dạng độ sang (00.00.00.00)
Function DoiA(vl)
Phanphu = Val(Right$(vl, 2))
giay = Val(Right$(vl, 5) - Right$(vl, 3))
Select Case Len(vl)
Case 12
Doo = Val(Left$(vl, 3))
Phut = Val(Left$(vl, 6) - Left$(vl, 4)) * 100
Case 11
Doo = Val(Left$(vl, 2))
Phut = Val(Left$(vl, 5) - Left$(vl, 3)) * 100
Case 10
Doo = Val(Left$(vl, 1))
Phut = Val(Left$(vl, 4) - Left$(vl, 2)) * 100
End Select
DoiA = Doo + (Phut / 60) + (giay / 3600) + (Phanphu / 360000)
End Function
Function TruA(Vl1, Vl2)
If Vl1 = " " Then Vl1 = "000.00.00.00"
If Vl2 = " " Then Vl2 = "000.00.00.00"
Phanphu1 = Val(Right$(Vl1, 2))
Giay1 = Val(Right$(Vl1, 5) - Right$(Vl1, 3))
'a1 = Right$(Vl1, 6)
'b1 = Right$(Vl1, 6)
'Phut1 = Val(Right$(Vl1, 8) - Right$(Vl1, 6))
Select Case Len(Vl1)
Case 12
Doo1 = Val(Left$(Vl1, 3))
Phut1 = Val(Left$(Vl1, 6) - Left$(Vl1, 4)) * 100
Case 11
Doo1 = Val(Left$(Vl1, 2))
Phut1 = Val(Left$(Vl1, 5) - Left$(Vl1, 3)) * 100
Case 10
Doo1 = Val(Left$(Vl1, 1))
Phut1 = Val(Left$(Vl1, 4) - Left$(Vl1, 2)) * 100
End Select
Do1 = Doo1 + (Phut1 / 60) + (Giay1 / 3600) + (Phanphu1 / 360000)
Phanphu2 = Val(Right$(Vl2, 2))
Giay2 = Val(Right$(Vl2, 5) - Right$(Vl2, 3))
'a2 = Right$(Vl2, 6)
'b2 = Right$(Vl2, 6)
'Phut2 = Val(Right$(Vl2, 8) - b2)
Select Case Len(Vl2)
Case 12
Doo2 = Val(Left$(Vl2, 3))
Phut2 = Val(Left$(Vl2, 6) - Left$(Vl2, 4)) * 100
Case 11
Doo2 = Val(Left$(Vl2, 2))
Phut2 = Val(Left$(Vl2, 5) - Left$(Vl2, 3)) * 100
Case 10
Doo2 = Val(Left$(Vl2, 1))
Phut2 = Val(Left$(Vl2, 4) - Left$(Vl2, 2)) * 100
End Select
Do2 = Doo2 + (Phut2 / 60) + (Giay2 / 3600) + (Phanphu2 / 360000)
TongA = Do1 - Do2
While TongA > 360
TongA = TongA - 360
Wend
DoA = Int(TongA)
PhutA = Int((TongA - DoA) * 60)
C = (((TongA - DoA) * 60) - PhutA) * 60
GiayA = Int(C)
PhanphuA = ((C - GiayA) * 100)
PhanphuA = Round((PhanphuA), 2)
'******
Select Case PhutA
Case Is >= 10
PhutA = Str$(PhutA)
Case Is = 0
PhutA = "00"
Case Is < 10
PhutA = "0" & Trim(Str$(PhutA))
End Select
Select Case GiayA
Case Is >= 10
GiayA = Str$(GiayA)
Case Is = 0
GiayA = "00"
Case Is < 10
GiayA = "0" & Trim(Str$(GiayA))
End Select
'PhanPhuA = Format(PhanPhuA, "##")
Select Case PhanphuA
Case Is >= 10
PhanphuA = Str$(Format(PhanphuA, "##"))
Case Is = 0
PhanphuA = "00"
Case Is < 10
PhanphuA = "0" & Trim(Str$(Format(PhanphuA, "##")))
End Select
TruA = Trim(Str$(DoA)) & "." & Trim(PhutA) & "." & Trim(GiayA) & "." & Trim(PhanphuA)
End Function
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom