Cách sử dụng
NỘI SUY 2 CHIỀU: Cú pháp: NS2C(Bảng ; Gía trị theo cột ; Gía trị theo hàng)
Vd: Với A=2, B=0,89 thì giá trị C cần nội suy như sau:
Kết quả:
Hàm này dùng cho BTL nền móng và kết cấu áo đường rất nhiều
NỘI SUY NGANG: NS_NGANG(Bảng , Gía trị nội suy; Thứ tự hàng chứa giá trị cần nội suy )
VD VỚI A=1,5 THÌ B =3 trong đó 1,5 là giá trị của A, 2 là thứ tự hàng của B ( A là hàng 1, B là hàng 2)
NỘI SUY DỌC:
Cú pháp: NS_DOC(BẢNG, GIÁ TRỊ NỘI SUY, THỨ TỰ CỘT CHỨA GIÁ TRỊ CẦN NỘI SUY )
VỚI A=1,5 THÌ B =3 trong đó 2 là thứ tự cột B
VỚI A=1,5 THÌ C =4.5 trong đó 3 là thứ tự cột C
Code tại đây
Function NS_DOC(ar As Range, x As Double, n As Byte) 'bien n de noi suy trong truong hop co nhieu hon 3 cot
Dim i As Integer
If ar.Cells(2, 1) > ar.Cells(1, 1) Then
i = 1
Do While ar.Cells(i, 1) <= x And i < ar.Rows.Count
i = i + 1
Loop
Else
i = 1
Do While ar.Cells(i, 1) >= x And i < ar.Rows.Count
i = i + 1
Loop
End If
NS_DOC = ar.Cells(i - 1, n) + (ar.Cells(i, n) - ar.Cells(i - 1, n)) * (x - ar.Cells(i - 1, 1)) / (ar.Cells(i, 1) - ar.Cells(i - 1, 1))
End Function
Function NS2C(ar As Range, x As Double, y As Double)
Dim i, j As Integer
Dim a1, a2 As Double
'xac dinh chi so i voi cells(i-1,1)<x<cells(i,1)
If ar.Cells(3, 1) > ar.Cells(2, 1) Then
i = 2
Do While ar.Cells(i, 1) <= x And i < ar.Rows.Count
i = i + 1
Loop
Else
i = 2
Do While ar.Cells(i, 1) >= x And i < ar.Rows.Count
i = i + 1
Loop
End If
'xac dinh chi so j voi cells(1,j-1)<y<cells(1,j)
If ar.Cells(1, 3) > ar.Cells(1, 2) Then
j = 2
Do While ar.Cells(1, j) <= y And j < ar.Columns.Count
j = j + 1
Loop
Else
j = 2
Do While ar.Cells(1, j) >= y And j < ar.Columns.Count
j = j + 1
Loop
End If
'xac dinh 2 gia tri a1, a2 tu noi suy 1 chieu voi x truoc
a1 = ar.Cells(i - 1, j - 1) + (ar.Cells(i, j - 1) - ar.Cells(i - 1, j - 1)) * (x - ar.Cells(i - 1, 1)) / (ar.Cells(i, 1) - ar.Cells(i - 1, 1))
a2 = ar.Cells(i - 1, j) + (ar.Cells(i, j) - ar.Cells(i - 1, j)) * (x - ar.Cells(i - 1, 1)) / (ar.Cells(i, 1) - ar.Cells(i - 1, 1))
'noi suy 1 chieu theo cot tu 2 gia tri a1 va a2 o tren
NS2C = a1 + (a2 - a1) * (y - ar.Cells(1, j - 1)) / (ar.Cells(1, j) - ar.Cells(1, j - 1))
End Function
Function NS_NGANG(ar As Range, x As Double, n As Byte)
Dim j As Integer
If ar.Cells(1, 2) > ar.Cells(1, 1) Then
j = 1
Do While ar.Cells(1, j) <= x And j < ar.Columns.Count
j = j + 1
Loop
Else
j = 1
Do While ar.Cells(1, j) >= x And j < ar.Columns.Count
j = j + 1
Loop
End If
NS_NGANG = ar.Cells(n, j - 1) + (ar.Cells(n, j) - ar.Cells(n, j - 1)) * (x - ar.Cells(1, j - 1)) / (ar.Cells(1, j) - ar.Cells(1, j - 1))
End Function








Facebook Comments