Option Explicit
[B]Function NoiSuyGPE(VungTra As Range, xX As Double, yY As Double) As Double[/B]
[COLOR="#0000CD"]'Ham Noi Suy 2 Chieu Tai GPE.COM (Sa_DQ)'[/COLOR]
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
[B]End Function[/B]