M
ummm, cái này đúng là nội suy 2 chiều thật, nhưng ko phải là sử dụng macro, k dùng đc với bảng bất kỳ
anh oi cho em xin công thức nội suy 1 chieu co dc ko anh nếu co thi up len cho em voi nhe cam on anh nhieu nhe
Hì hì! Cám ơn bác nhiều. Nhưng em đang tìm hàm nội suy hai chiều sử dụng VBA. Em đã đọc nó trong sách của tác giả Phan Tự Hướng để hôm khác em post lên nha.2 file nội suy gửi tặng các bạn, mong các bạn làm việc với nội suy nhanh hơn chút thời gian đỡ mất công ngồi bấm máy tính.
Option Explicit
Function NoiSuyGPE(VungTra As Range, xX As Double, yY As Double) As Double
'Ham Noi Suy 2 Chieu Tai GPE.COM (Sa_DQ)'
Dim iW As Integer, jI 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
Dim RgNg As Range, RgDoc As Range
Dim Rng As Range, Clls As Range
Set RgNg = VungTra.Cells(1, 1).Resize(1, VungTra.Columns.Count - 1)
Set RgDoc = VungTra.Cells(1, 1).Resize(VungTra.Rows.Count, 1)
1 For Each Rng In RgNg
2 If Rng <= yY And Rng.Offset(, 1) >= yY Then
3 y1 = Rng: y2 = Rng.Offset(, 1)
For Each Clls In RgDoc
5 If Clls <= xX And Clls.Offset(1) >= xX Then
x1 = Clls: x2 = Clls.Offset(1)
'3*'
7 a11 = Cells(Clls.Row, Rng.Column): a12 = Cells(Clls.Row, Rng.Column + 1)
a21 = Cells(Clls.Row + 1, Rng.Column): a22 = Cells(Clls.Row + 1, Rng.Column + 1)
9 t1 = (a12 - a11) * (yY - y1) / (y2 - y1) + a11
t2 = (a22 - a21) * (yY - y1) / (y2 - y1) + a21
11 NoiSuyGPE = (t2 - t1) * (xX - x1) / (x2 - x1) + t1
Exit For
13 End If
Next Clls
15 End If
Next Rng
17 If NoiSuyGPE = 0 Then '!'
msgbox "gia tri can tim ko nam trong bang tra", vbInformation
19 End If
End Function