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
Mình có một bảng cơ sỡ dữ liệu theo 2 toạ độ . Trong đó mình muốn tìm ra giá trị tại toạ độ mà ko có trong bảng thì phải nội suy. Các bạn có thể giúp mình viết hàm tính toán được khôg?
Thêm tí hyperlink trong file của bạn viendo cho nó ngon.Tôi chẳng biết nội suy là sao cả, dùng Index và Match tra bảng mà không biết bạn cần lấy cận trên hay cận dưới đây.
Thêm 1 bài nữa cho phong phú. Kết qua của tôi chạy ra cũng giống Pác SA_DQ là: 0.65646398067. Code:
Function Noisuy2chieu(SoX, SoY, vungXY) As Single
Dim i, j As Integer
Cao = vungXY.Rows.Count 'Xac dinh so hang
Rong = vungXY.Columns.Count 'Xac dinh so cot
Dim a1, a2, B1, B2, Y1, Y2, Tim As Single 'Cac diem chan
For i = 2 To Cao + 1
If vungXY(i, 1) > SoX Then
n = i
For j = 2 To Rong + 1
If vungXY(1, j) > SoY Then
m = j
B1 = vungXY(n - 1, m)
B2 = vungXY(n, m)
a1 = vungXY(n - 1, m - 1)
a2 = vungXY(n, m - 1)
Y1 = (SoY - vungXY(1, m - 1)) * (B1 - a1) / (vungXY(1, m) - vungXY(1, m - 1)) + a1
Y2 = (SoY - vungXY(1, m - 1)) * (B2 - a2) / (vungXY(1, m) - vungXY(1, m - 1)) + a2
Tim = (SoX - vungXY(n - 1, 1)) * (Y2 - Y1) / (vungXY(n, 1) - vungXY(n - 1, 1)) + Y1
Exit For
End If
Next j
Exit For
End If
Next i
Noisuy2chieu = Tim
End Function
Bạn xem fiel thủ được chưa nhéMình có một bảng cơ sỡ dữ liệu theo 2 toạ độ . Trong đó mình muốn tìm ra giá trị tại toạ độ mà ko có trong bảng thì phải nội suy. Các bạn có thể giúp mình viết hàm tính toán được khôg? Mình xin cảm ơn.
Dưới đây là file đính kèm của mình!!