Mình có file VBE hàm nội suy 2 mảng, bạn nghiên cứu dùnh thử xem :
Public Function NoiSuy2D(X, Y, Xlines As Range, Ylines As Range, Sheet As Range)
Dim I, J, N, M, K, L As Byte
Dim KetQua, A, B As Double
M = Xlines.Count
N = Ylines.Count
Select Case X
Case Is < Xlines(1, 1)
KetQua = 0
Case Is > Xlines(1, M)
KetQua = 0
Case Else
I = 1
For K = 1 To M
If X > Xlines(1, K) Then
I = I + 1
End If
Next K
Select Case Y
Case Is < Ylines(1, 1)
KetQua = 0
Case Is > Ylines(N, 1)
KetQua = 0
Case Else
J = 1
For L = 1 To N
If Y > Ylines(L, 1) Then
J = J + 1
End If
Next L
A = Sheet(J - 1, I - 1) + (X - Xlines(1, I - 1)) * (Sheet(J - 1, I) - Sheet(J - 1, I - 1)) / (Xlines(1, I) - Xlines(1, I - 1))
B = Sheet(J, I - 1) + (X - Xlines(1, I - 1)) * (Sheet(J, I) - Sheet(J, I - 1)) / (Xlines(1, I) - Xlines(1, I - 1))
KetQua = A + (B - A) * (Y - Ylines(J - 1, 1)) / (Ylines(J, 1) - Ylines(J - 1, 1))
End Select
End Select
NoiSuy2D = KetQua
End Function