Public Function Noi_suy(gt1, gt2, rng As Range, Optional chk As Boolean = False)
' cdbl(gt1) la gia tri tim kiem theo hang, cdbl(gt2) la gia tri tim kiem theo cot
Dim i As Long, j As Long, m As Long, n As Long, Arr
Dim arr11 As Double, arr21 As Double, arr12 As Double, arr22 As Double, b1 As Double, b2 As Double
' mang gom m hang va n cot
Arr = rng.Value
m = UBound(Arr, 1)
n = UBound(Arr, 2)
If Not chk Then
If gt1 > Arr(m, 1) Or gt2 > Arr(1, n) Or gt1 < Arr(2, 1) Or gt2 < Arr(1, 2) Then Noi_suy = "": Exit Function
End If
For i = 1 To m
If Arr(i, 1) > CDbl(gt1) Or i = m Then
Exit For
End If
Next
For j = 1 To n
If Arr(1, j) > CDbl(gt2) Or j = n Then
Exit For
End If
Next
' noi suy giArr tri
arr11 = Arr(i - 1, j - 1): arr21 = Arr(i - 1, j): arr12 = Arr(i, j - 1): arr22 = Arr(i, j)
b1 = arr11 + (CDbl(gt2) - Arr(1, j - 1)) * (arr21 - arr11) / (Arr(1, j) - Arr(1, j - 1))
b2 = arr12 + (CDbl(gt2) - Arr(1, j - 1)) * (arr22 - arr12) / (Arr(1, j) - Arr(1, j - 1))
Noi_suy = b1 + (CDbl(gt1) - Arr(i - 1, 1)) * (b2 - b1) / (Arr(i, 1) - Arr(i - 1, 1))
End Function