Trang 1/2 1 2 cuốicuối
Hiển thị kết quả tìm kiếm từ 1 đến 10 trên tổng số: 20
  1. #1
    Tham gia ngày
    06 2006
    Nơi Cư Ngụ
    Hà Nội
    Bài gởi
    5,715
    Cảm ơn
    8,029
    Được cảm ơn 21,305 lần trong 4,851 bài viết
    1. Mẹo thể hiện góc theo độ trong Excel:
    Trong kỹ thuật, nhiều công việc phải thể hiện ở dạng độ như 12°15'. Nhưng trong Excel không có, vì vậy bạn có thể tạo dạng này như sau:
    + Chọn ô để thể hiện độ.
    + Vào Format/Cell/Number, chọn mục Custom.
    + Copy nội dung (###"°"##"'") trong Type.
    + Bạn chỉ nhập số liền vào.

    Chú ý: Một số font chữ không thể hiện đầy đủ góc theo độ và phải có quy ước khi nhập góc phút, nếu phút < 10 thì phải thêm số 0 trước. :.

    2. Tính giá trị trung bình của góc thể hiện ở độ, phút:

    Bạn đã biết định dạng góc ở dạng độ & phút, góc đó thể hiện ở dạng số. Ta có thể tính toán được giá trị trung bình của nó bằng hàm sau:

    Code:
    Function gocTB(Vung)
        On Error GoTo Sai
        Dim i, Dai, Tong, Goctheophut, TB, Trai, Phai
        Tong = 0
        i = 0
        Dim Ogoc
        For Each Ogoc In Vung
                Dai = Len(Ogoc)
                If Ogoc <> 0 Then
                    Goctheophut = Val(Left(Ogoc, Dai - 2) * 60) + Val(Right(Ogoc, 2))
                    Tong = Tong + Goctheophut
                    i = i + 1
                Else
                    i = i
                End If
        
        Next
                TB = Tong / i / 60
                Trai = Int(TB)
                Phai = Round((TB - Trai) * 60, 0)
                If Phai > 10 Then
                    gocTB = Trai & "°" & Phai & "'"
                Else
                    gocTB = Trai & "°0" & Phai & "'"
                End If
                Exit Function
    Sai:
        gocTB = "So lieu sai"
    End Function


    Nếu bạn nào quan tâm đến góc đầy đủ cả độ, phút, giây thì tôi sẽ bổ sung thêm.

    Các bạn cho ý kiến nhé!

    Để thể hiện ở dạng độ, phút, giây như 12°15'22'', bạn thực hiện như sau:
    + Chọn ô để thể hiện độ.
    + Vào Format/Cell/Number, chọn mục Custom.
    + Copy nội dung ##"°"##"'"##"''" trong Type.
    + Bạn chỉ nhập số liền vào.

    Sau đó để tính giá trị trung bình thì copy đoạn code sau:

    Function Gocgiay(Vung)
    On Error GoTo Sailam
    Dim i, Dai, Tong, Goctheogiay, TB, Trai, Giua, Phai
    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

    Next
    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"
    End Function
    Mời bạn tải file chi tiết kèm theo (gồm cả 2 hàm)
    Tập tin đính kèm Tập tin đính kèm
    thay đổi nội dung bởi: PhanTuHuong, 14-04-07 lúc 09:51 PM

  2. Có 7 thành viên cảm ơn PhanTuHuong về bài viết này:


  3. #2
    Tham gia ngày
    09 2006
    Nơi Cư Ngụ
    Thái Bình - Quảng Ninh
    Bài gởi
    783
    Cảm ơn
    187
    Được cảm ơn 1,217 lần trong 489 bài viết
    Bài của anh PTH rất hay, nhưng theo tôi thì làm như vậy có vẻ như là chương trình tính toán xử lý số liệu thí nghiệm vẫn phải nhập tay giá trị các góc ma sát do đó áp dụng vẫn chưa thật tiện lắm.
    Cách của tôi là:
    Sau khi thí nghiệm cắt phẳng, Excel sẽ tính cho ta được góc ma sát (phi) và lực dính kết (c). Tuy nhiên góc ở đây là dạng thập phân. Bạn nên viết thêm một hàm đổi giá trị từ độ thập phân sang dạng độ phút giây bằng cách thêm vào ký tự Chr(186).

  4. #3
    Tham gia ngày
    09 2006
    Nơi Cư Ngụ
    Thái Bình - Quảng Ninh
    Bài gởi
    783
    Cảm ơn
    187
    Được cảm ơn 1,217 lần trong 489 bài viết
    Code:
     
    'Doi tu do dang thap phan sang dang do, phut
    Public Function do_vn(degree As Double) As String
    If Round((degree - Int(degree)) * 60, 0) >= 60 Then
    do_vn = (Int(degree) + 1) & Chr(186) & "00'"
    Else
    do_vn = Int(degree) & Chr(186) & Round((degree - Int(degree)) * 60, 0) & "'"
    End If
    End Function
    VD: do_vn(6.38)=6o23'
    Thuật toán tính trung bình độ thì đơn giản rất nhiều.
    Nếu bạn nào cần tôi sẽ post code hàm chuyển đổi độ sang dạng độ phút giây.
    VD: do_tg(6o23')=6.38

  5. Có 2 thành viên cảm ơn nvson về bài viết này:


  6. #4
    Tham gia ngày
    09 2006
    Nơi Cư Ngụ
    Thái Bình - Quảng Ninh
    Bài gởi
    783
    Cảm ơn
    187
    Được cảm ơn 1,217 lần trong 489 bài viết
    Những ký tự đặc biệt cũng có gì đâu, vì nó là bảng mã ANSI chuẩn mà!
    Tập tin đính kèm Tập tin đính kèm
    thay đổi nội dung bởi: nvson, 22-11-06 lúc 08:13 AM Lý do: Thêm file

  7. Có 4 thành viên cảm ơn nvson về bài viết này:


  8. #5
    Tham gia ngày
    06 2006
    Nơi Cư Ngụ
    Hà Nội
    Bài gởi
    5,715
    Cảm ơn
    8,029
    Được cảm ơn 21,305 lần trong 4,851 bài viết
    À, hàm này tôi cũng đã post bên kết cấu, quên mất.

    Hàm chuyển góc ở dạng số thập phân ra góc ở dạng độ (vd:12°15'):

    Code:
    Function Chuyengoc(Gocthapphan As Single) 'Đổi thành góc độ
       Goc = Round(Gocthapphan, 2)
       Goctrai = Int(Goc)
       Gocphai = Round(Goctrai * 0.6, 0)
          If Gocphai >= 10 Then
                Chuyengoc = Goctrai & "°" & Gocphai & "'"
            ElseIf Gocphai < 10 Then
                 Chuyengoc = Goctrai & "°0" & Gocphai & "'"
            Else
                 Chuyengoc = "Sai dau vao roi !!!!!!!!"
          End If
    End Function

  9. Thành viên sau cảm ơn PhanTuHuong về bài viết này:


  10. #6
    Tham gia ngày
    08 2007
    Bài gởi
    2
    Cảm ơn
    0
    Được cảm ơn 1 lần trong 1 bài
    Em có thắc mắc như vầy. Sao các anh ko chuyển góc dạng dms sang radian, với đơn vị radian thì cộng trừ quá dễ dàng rồi, sau đó kết quả sau cùng chuyển từ radian sang dms là xong. Khỏi phải viết thuật toán cộng trừ độ phút giây.

  11. Thành viên sau cảm ơn t2k về bài viết này:


  12. #7
    Tham gia ngày
    06 2006
    Nơi Cư Ngụ
    Hà Nội
    Bài gởi
    5,715
    Cảm ơn
    8,029
    Được cảm ơn 21,305 lần trong 4,851 bài viết
    Nếu chỉ sử dụng góc Radian hay độ kiểu thập phân thì nói làm gì. Nhiều công việc yêu cầu phải thể hiện rõ góc bao nhiêu độ, phút, giây.

  13. Có 2 thành viên cảm ơn PhanTuHuong về bài viết này:


  14. #8
    Tham gia ngày
    07 2006
    Nơi Cư Ngụ
    Quảng Bình
    Bài gởi
    242
    Cảm ơn
    260
    Được cảm ơn 282 lần trong 76 bài viết
    Bạn pots bài đầy đủ độ, phút giây cho anh em tham khảo đi
    Cảm ơn bạn !

  15. #9

    Smile

    Trích Nguyên văn bởi PhanTuHuong
    Nếu chỉ sử dụng góc Radian hay độ kiểu thập phân thì nói làm gì. Nhiều công việc yêu cầu phải thể hiện rõ góc bao nhiêu độ, phút, giây.
    PTH có thể post cách chuyển đổi Radian hay độ kiểu thập phân ra độ, phút, giây và ngược lại giúp tôi không? vì tôi không rành VBA lắm. Cảm ơn PTH nhé.

  16. #10
    Tham gia ngày
    11 2007
    Bài gởi
    11
    Cảm ơn
    2
    Được cảm ơn 2 lần trong 2 bài viết
    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:
    Function Gocgiay(Vung)
    On Error GoTo Sailam
    Dim i, Dai, Tong, Goctheogiay, TB, Trai, Giua, Phai
    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
    
    Next
    TB = Tong  / 3600 //*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"
    End Function
    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

  17. Thành viên sau cảm ơn Ae-excel về bài viết này:


Trang 1/2 1 2 cuốicuối

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •  

Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp
Chính tả Bỏ dấu kiểu mới  [Bật/Tắt (F9)]