Ae-excel
Thành viên mới

- Tham gia
- 23/11/07
- Bài viết
- 11
- Được thích
- 2
Mình rất cảm ơn vì bạn đã viết Cách thể hiện góc ở dạng độ thực sự mình đi kiếm bài này rất hay nhưng có 1 vài vấn đê nhỏ ở code của bạn. Mình ko thể fix được lỗi đó mình mong bạn fix lại giúp mình.
http://www.giaiphapexcel.com/forum/showthread.php?t=96 Bài viết của bạn
Mình dùng ##"°"##"'"##"''" xin lỗi mình đã sửa code tính trung bình thành code tính tổng. Nhưng mình nghĩ ko có gì thay đổi so với code gốc của bạn:
Code:
Nhưng khi áp dụng có 2 vấn đề:
- Nếu nhập giá trị theo đúng dạng ##"°"##"'"##"''" thì cho kết quả đúng còn nếu nhập theo dạng 00"°"##"'"##"''" (Ví dụ 00°30'00'') thì lại cho kết quả "So lieu sai".
- Nếu tổng hay trung bình góc mà ra có dạng 30°60'00'' hay 30°00'60'' thì nó ko chuyển thành 31°00'00'' và 30°01'00'' vì thự chất 30°60'00'' và 31°00'00'' hay 30°00'60'' và 30°01'00'' là giống nhau.
Mình mong bạn trả lời giúp mình. Mình cảm ơn bạn nhiều
http://www.giaiphapexcel.com/forum/showthread.php?t=96 Bài viết của bạn
Mình dùng ##"°"##"'"##"''" xin lỗi mình đã sửa code tính trung bình thành code tính tổng. Nhưng mình nghĩ ko có gì thay đổi so với code gốc của bạn:
Code:
Mã:
Function Gocgiay(Vung)
[LEFT]On Error GoTo Sailam
Dim i, Dai, Tong, Goctheogiay, TB, Trai, Giua, Phai
[LEFT]Tong = 0
i = 0
Dim Ogoc
For Each Ogoc In Vung
Dai = Len(Ogoc)
If Ogoc <> 0 Then
Goctheogiay = Val(Left(Ogoc, Dai - 4) * 3600) + Val(Left(Right(Ogoc, 4), 2) * 60) + Val(Right(Ogoc, 2))
Tong = Tong + Goctheogiay
i = i + 1
Else
i = i
End If[/LEFT]
[LEFT]Next
[COLOR=red]TB = Tong / 3600[/COLOR] 'dòng này mình đã sửa TB = Tong / i / 3600
Trai = Int(TB)
Giua = Int((TB - Trai) * 60)
Phai = Round(((TB - Trai) * 60 - Giua) * 60, 0)
If Phai > 10 And Giua > 10 Then
Gocgiay = Trai & "°" & Giua & "'" & Phai & "''"
ElseIf Phai > 10 And Giua < 10 Then
Gocgiay = Trai & "°0" & Giua & "'" & Phai & "''"
ElseIf Phai < 10 And Giua > 10 Then
Gocgiay = Trai & "°" & Giua & "'0" & Phai & "''"
Else
Gocgiay = Trai & "°0" & Giua & "'0" & Phai & "''"
End If
Exit Function
Sailam:
Gocgiay = "So lieu sai"[/LEFT]
[LEFT]End Function[/LEFT]
[/LEFT]
Nhưng khi áp dụng có 2 vấn đề:
- Nếu nhập giá trị theo đúng dạng ##"°"##"'"##"''" thì cho kết quả đúng còn nếu nhập theo dạng 00"°"##"'"##"''" (Ví dụ 00°30'00'') thì lại cho kết quả "So lieu sai".
- Nếu tổng hay trung bình góc mà ra có dạng 30°60'00'' hay 30°00'60'' thì nó ko chuyển thành 31°00'00'' và 30°01'00'' vì thự chất 30°60'00'' và 31°00'00'' hay 30°00'60'' và 30°01'00'' là giống nhau.
Mình mong bạn trả lời giúp mình. Mình cảm ơn bạn nhiều
Lần chỉnh sửa cuối: