Mình kiếm đc trong diễn đàn các hàm nội suy 1 chiều và 2 chiều rồi nhưng giờ mình muốn tạo thành add in để sử dụng cho bất kỳ bảng tính nào cũng đc, nhưng ko bít làm ntn, mong các bạn giúp đỡ
Đây là hàm mình đang dùng:
Đây là hàm mình đang dùng:
Mã:
Function noisuy1(vungtra As Range, X As Double, cot As Integer) As Double
'ham noi suy 1 chieu
Dim ktra As Boolean
Dim i As Integer
Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double
For i = 1 To vungtra.Cells.Count
kiemtra = False
If vungtra.Cells(i, 1) <= X And vungtra.Cells(i + 1, 1) >= X Then
x1 = vungtra.Cells(i, 1): x2 = vungtra.Cells(i + 1, 1)
y1 = vungtra.Cells(i, cot): y2 = vungtra.Cells(i + 1, cot)
noisuy1 = (y2 - y1) * (X - x1) / (x2 - x1) + y1
ktra = True
End If
Next i
If ktra = False Then
MsgBox "gia tri can tim ko nam trong bang tra", vbInformation
Exit Function
End If
End Function
Function noisuy2(vungtra As Range, X As Double, Y As Double) As Double
'ham noi suy 2 chieu
Dim ktra As Boolean
Dim i As Integer, j As Integer
Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double
Dim a11 As Double, a12 As Double, a21 As Double, a22 As Double
Dim t1 As Double, t2 As Double
For j = 2 To vungtra.Cells.Count
If vungtra.Cells(1, j) <= Y And vungtra.Cells(1, j + 1) >= Y Then
For i = 2 To vungtra.Cells.Count
ktra = False
If vungtra.Cells(i, 1) <= X And vungtra.Cells(i + 1, 1) >= X Then
x1 = vungtra.Cells(i, 1): x2 = vungtra.Cells(i + 1, 1)
y1 = vungtra.Cells(1, j): y2 = vungtra.Cells(1, j + 1)
a11 = vungtra.Cells(i, j): a12 = vungtra.Cells(i, j + 1)
a21 = vungtra.Cells(i + 1, j): a22 = vungtra.Cells(i + 1, j + 1)
t1 = (a12 - a11) * (Y - y1) / (y2 - y1) + a11
t2 = (a22 - a21) * (Y - y1) / (y2 - y1) + a21
noisuy2 = (t2 - t1) * (X - x1) / (x2 - x1) + t1
End If
Next i
ktra = True
End If
Next j
If ktra = False Then
MsgBox "gia tri can tim ko nam trong bang tra", vbInformation
Exit Function
End If
End Function