GPE Phát hành sách: "Lập trình VBA trong Excel cho người mới bắt đầu - 2014" | "VBA trong Excel - Cải thiện và tăng tốc - 2013"
Hiển thị kết quả tìm kiếm từ 1 đến 8 trên tổng số: 8
  1. #1
    Tham gia ngày
    02 2008
    Nơi Cư Ngụ
    Mường La, Sơn La
    Bài gởi
    1,371
    Cảm ơn
    2,879
    Được cảm ơn 2,186 lần trong 899 bài viết

    Công thức tính hệ số nội suy ?

    Tôi có file tính hệ số nội suy, công thức trong kết quả đã được lập theo đúng công thức tổng quát và đã cho kết quả đúng nhưng tôi thấy nó dài quá. Nhờ các Bạn viết giúp công thức cho gọn hơn. Thanks !
    Tập tin đính kèm Tập tin đính kèm
    Hỏi thì ngại mọi người chê mình dốt mà không hỏi thì sẽ dốt cả đời ???. Học hỏi là để vượt qua chính mình.

  2. #2
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    8,384
    Cảm ơn
    4,261
    Được cảm ơn 25,444 lần trong 7,968 bài viết
    =HLOOKUP($C8;$C$4:$H$5;2;1)-(HLOOKUP($C8;$C$4:$H$5;2;1)-OFFSET($C$5;0;MATCH($C8;$C$4:$H$4;1)))*(C8-H8)/(OFFSET($C$4;0;MATCH($C8;$C$4:$H$4;1))-HLOOKUP($C8;$C$4:$H$5;1;1))

    Còn khoảng 1/2 chiều dài.

    Có lẽ vẫn còn có thể rút gọn hơn. Anh xem file. Sử dụng thêm 1 giá trị 0
    Các cột phụ là nháp để anh xem cho dễ (xem xong xoá), cột cuối là công thức chính.
    Tập tin đính kèm Tập tin đính kèm
    thay đổi nội dung bởi: ptm0412, 07-07-11 lúc 09:02 PM
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm, nhi giáo bất quyện dã.

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


  4. #3
    Tham gia ngày
    09 2008
    Bài gởi
    2,458
    Cảm ơn
    2,532
    Được cảm ơn 3,304 lần trong 1,819 bài viết

    Bạn thử xài công thức này

    =IF($J4<=NTi,0.64,IF($J4<=ChT,0.64-((0.64-0.43)*($J4-NTi))/NTi,IF($J4<=N0Ti,0.43-((0.43-0.3)*($J4-ChT))/B0T,IF($J4<=TrTi,0.3-((0.3-0.23)*($J4-N0Ti))/N0Ti,IF($J4<=N00Ti,0.23-((0.23-0.13)*($J4-TrTi))/B0T*10,0)))))

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


  6. #4
    Tham gia ngày
    02 2008
    Bài gởi
    782
    Cảm ơn
    919
    Được cảm ơn 1,151 lần trong 544 bài viết
    Mình làm hàm tự tạo để tính:
    Tập tin đính kèm Tập tin đính kèm
    thay đổi nội dung bởi: thanhlanh, 08-07-11 lúc 01:12 AM

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


  8. #5
    Tham gia ngày
    05 2007
    Bài gởi
    2,528
    Cảm ơn
    2,776
    Được cảm ơn 4,099 lần trong 2,019 bài viết
    Mình làm hàm tự tạo để tính:
    Cũng có thể như vầy, gọn xíu í mà! :
    PHP Code:
    Option Explicit
    Function NoiSuy(As Currency)
     
    Dim J As Integer
     
    For 2 To 6
        With Cells
    (4J)
            If .
    Value <= And .Offset(, 1).Value >= N Then
                NoiSuy 
    = .Offset(1) + ((- .Value) * (.Offset(11) - .Offset(1))) / (.Offset(, 1) - .Value)
                Exit Function
            
    End If
        
    End With
     Next
    End 
    Function 
    0909 127 085

  9. Có 3 thành viên cảm ơn HYen17 về bài viết này:


  10. #6
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    8,384
    Cảm ơn
    4,261
    Được cảm ơn 25,444 lần trong 7,968 bài viết
    Nếu dùng hàm tự tạo, tôi sẽ viết hàm với 3 tham số:

    Function Noisuy(XNum As Double, XRng As Range, YRng As Range) As Double

    Như vậy, có thể dùng hàm với 2 dãy số tại bất kỳ vị trí nào và kích thước bao nhiêu.
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm, nhi giáo bất quyện dã.

  11. #7
    Tham gia ngày
    11 2007
    Nơi Cư Ngụ
    Gò Vấp
    Bài gởi
    8,384
    Cảm ơn
    4,261
    Được cảm ơn 25,444 lần trong 7,968 bài viết
    PHP Code:
    Function Noisuy(XNum As DoubleXRng As RangeYRng As Range) As Double
    If XNum 0 Then Noisuy 0: Exit Function
    Dim KnownXKnownYik
    1
    ReDim KnownX
    (1 To XRng.Count)
    ReDim KnownY(1 To XRng.Count)
    For 
    Each Cll In XRng
        KnownX
    (k) = Cll.Value
        k 
    1
    Next
    1
    For Each Cll In YRng
        KnownY
    (k) = Cll.Value
        k 
    1
    Next
            
    For 1 To XRng.Count
                
    If KnownX(i) <= XNum And KnownX(1) >= XNum Then
                    Noisuy 
    KnownY(i) + ((XNum KnownX(i)) * _
                    
    (KnownY(1) - KnownY(i))) / (KnownX(1) - KnownX(i))
                    Exit Function
                
    End If
            
    Next
    End 
    Function 
    Tập tin đính kèm Tập tin đính kèm
    Cheettit Old Man Thánh tắc ngô bất năng, ngô học bất yếm, nhi giáo bất quyện dã.

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


  13. #8
    Tham gia ngày
    02 2008
    Nơi Cư Ngụ
    Mường La, Sơn La
    Bài gởi
    1,371
    Cảm ơn
    2,879
    Được cảm ơn 2,186 lần trong 899 bài viết
    Trích Nguyên văn bởi ChanhTQ@ View Post
    =IF($J4<=NTi,0.64,IF($J4<=ChT,0.64-((0.64-0.43)*($J4-NTi))/NTi,IF($J4<=N0Ti,0.43-((0.43-0.3)*($J4-ChT))/B0T,IF($J4<=TrTi,0.3-((0.3-0.23)*($J4-N0Ti))/N0Ti,IF($J4<=N00Ti,0.23-((0.23-0.13)*($J4-TrTi))/B0T*10,0)))))
    Thầy ơi chữ màu đỏ có phải là Name không ạ ?

    Cảm ơn các bạn ! các phương án các bạn đưa ra đều cho kết quả đúng nhưng tôi chưa kịp hiểu, tôi sẽ nghiên cứu từng PA nếu có gì chưa hiểu sẽ nhờ các bạn chỉ giáo tiếp.
    thay đổi nội dung bởi: TrungChinhs, 08-07-11 lúc 07:02 PM
    Hỏi thì ngại mọi người chê mình dốt mà không hỏi thì sẽ dốt cả đời ???. Học hỏi là để vượt qua chính mình.

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)]