Hỏi về cách sử dụng name động trong hàm nội suy (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

matran25251325

Thành viên tiêu biểu
Tham gia
13/1/11
Bài viết
424
Được thích
39
Như file đính kèm thì tại cột F là số liệu cần tra, cột I là số liệu tra được theo hàm nội suy 2 chiều. Nhưng có bất cập là vùng dữ liệu chỉ để chung với sheet tra, nhưng nếu đưa vùng dữ liệu cần tra qua 1 sheet riêng thì số liệu cần tra ko ra. Vậy cho mình hỏi có cách nào để đưa toàn bộ vùng dữ liệu cần tra ra 1 shêet riêng được ko?
 

File đính kèm

Bạn thêm một sheet mới, sau đó bôi đen vùng dữ liệu ("T1:AE426") -> nhấn 2 phim Ctrl + X, qua sheet mới vừa tạo, chọn ô (A1) nhấn 2 phim Ctrl + V.
Xong!
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu cắt vùng dữ liệu qua sheet khác thì nếu tra số liệu ở cột F thì cột I ko tìm được giá trị cần tra. Cảm ơn chú cuội 92, ko biết bác nào có phương án giải quyết vấn đề này ko?
 
Upvote 0
Nếu cắt vùng dữ liệu qua sheet khác thì nếu tra số liệu ở cột F thì cột I ko tìm được giá trị cần tra. Cảm ơn chú cuội 92, ko biết bác nào có phương án giải quyết vấn đề này ko?
Ồ! mình xem lại rồi, Hoá ra là hàm tự tạo.
Chữa cháy bằng cách này vậy.
xem file đính kèm!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
oke thank bác đã giúp. Bác có thêm đoạn này "Dim ten As String" nhưng hình như là thừa thì phải.
 
Upvote 0
Ồ! mình xem lại rồi, Hoá ra là hàm tự tạo.
Chữa cháy bằng cách này vậy.
xem file đính kèm
Ai lại làm vậy. Nếu mỗi bảng tra ở một Sheet khác nhau thì làm sao mà sửa. Ít ra cũng phải như thế này:
PHP:
With VungTra.Parent
Tuy nhiên cũng không nên viết code theo kiểu như trong file.
Ngoài ra, theo như file bạn đưa lên thì thực tế là nội suy 1 chiều, chẳng qua cách bố trí bảng tra hơi khác thông thường mà thôi. Nếu là tôi, với nhu cầu như trong file thì tôi làm như thế này:
PHP:
Function TraMucNuoc(MucNuoc As Double, VungTra As Range)
Dim R As Long, C As Long, BangTra, Nguyen As Long, Le As Double
BangTra = VungTra.Value:    Nguyen = Int(MucNuoc):  Le = Round(MucNuoc - Nguyen, 6)
For R = 2 To UBound(BangTra, 1)
    If BangTra(R, 1) = Nguyen Then
        For C = 2 To UBound(BangTra, 2)
            If BangTra(1, C) > Le Then Exit For
        Next
        C = C - 1
        If C < UBound(BangTra, 2) Then
            TraMucNuoc = BangTra(R, C) + (Le - BangTra(1, C)) * (BangTra(R, C + 1) - BangTra(R, C)) / (BangTra(1, C + 1) - BangTra(1, C))
        Else
            If R < UBound(BangTra, 1) Then
                TraMucNuoc = BangTra(R, C) + (Le - BangTra(1, C)) * (BangTra(R + 1, 2) - BangTra(R, C)) / (1 - BangTra(1, C))
            Else
                TraMucNuoc = CVErr(xlErrNA)
                Exit Function
            End If
        End If
        Exit Function
    End If
Next
End Function
 
Upvote 0
Thank bác HưuThang nhiều. Hàm này em cũng lấy trên GPE lâu rồi, do lúc đó đến giờ chưa gặp trường hợp nào khuất mắt nên chưa cần chỉnh sửa. Giờ gặp bác có vẻ hàm được gọn và oke hơn.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom