Hàm Nội Suy! (4 người xem)

  • Thread starter Thread starter vietlge
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

vietlge

Thành viên mới
Tham gia
22/10/08
Bài viết
11
Được thích
0
Mong các Anh, Chị chỉ giúp. Trong excel có bao nhiêu cách để giải quyết một bài toán nội suy!
Thanks & Best regards!
 
Mình đã thử 2 cách:
1. Viết hàm bình thường trong Formulas Bar của Excel.
2. Viết code trong VBE xem như là 1 hàm tự tạo.

Theo mình, dù cách nào thì cũng đều là áp dụng các công thức nội suy trong toán học.
 
Bạn nói rõ cho mình cách giải bài toán nội suy hai mảng và kèm theo ví dụ được không?
Cảm ơn bạn nhiều!
 
Nội suy 2 chiều : bạn vào VBE, thêm module và viết code như sau :

Function NS2(x, y As Single, Mang As Range)

Dim Tam1, Tam2 As Single

Tam1 = Mang(2, 2) + (Mang(3, 2) - Mang(2, 2)) / (Mang(3, 1) - Mang(2, 1)) * (x - Mang(2, 1))
Tam2 = Mang(2, 3) + (Mang(3, 3) - Mang(2, 3)) / (Mang(3, 1) - Mang(2, 1)) * (x - Mang(2, 1))
NS2 = Tam1 + (Tam2 - Tam1) / (Mang(1, 3) - Mang(1, 2)) * (y - Mang(1, 2))

End Function

Sử dụng hàm NS2 như sau :

Ví dụ :
cho mảng số liệu : (Xem hình)
Giả sử bạn muốn nội suy với giá trị là : 13 thuộc [10;20] và 125 thuộc [100;200].

Bạn nhập mảng số liệu trên vào Excel
Tại ô nào đó gõ : =NS2(13,125,chọn mảng số liệu bên trên)
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    14.8 KB · Đọc: 153
Lần chỉnh sửa cuối:
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
 
xin chỉ giúp mình cách vào vbe và cách tạo module và viết code
khi mình có một mảng dữ liệu rồi thì mình cứ vào vbe và viết code à?
có phải bôi đen cái mảng dữ liệu đó không bạn?
mình đính kèm một mảng bạn chỉ giúp mình nhé
CHe/HdP/Hd00.20.40.60.811.21.40.23.0853.2803.4783.6353.7703.8423.8753.9420.33.0853.2803.4803.6423.7803.8583.9003.9600.43.0853.2823.4823.6553.7983.8843.9353.981
nếu He/Hd=0.3 và P/Hd = 0.25 thì giá trị cần tìm C là =?
Thanks & Best Regards!!!!!!!!!!
 
Bạn nói rõ cho mình cách giải bài toán nội suy hai mảng và kèm theo ví dụ được không?
Cảm ơn bạn nhiều!

Lúc nãy mình đưa lên bài toán nội suy 2 chiều, ý bạn có phải là như vậy không?
- Nếu đúng, sau khi gõ '=NS2(13,125," bạn tô đen mảng số liệu rồi nhấn Enter.
- Nếu không bạn có thể mô tả cho mình thế nào là phép nội suy 2 mảng không, mình chưa thử qua phép nội suy này.

Cách vào VBE để viết code :
1. Mở Excel, bấm Alt F11.
2. Ở cửa sổ bên trái, click chuột phải vào mục VBAProject (Book1), chọn Insert --> Module.
3. Sang cửa sổ bên phải và viết code vào đó, sau đó save lại.
4. Bấm Alt F11 để trở lại Excel, kể từ đây trong file Excel bạn vừa Save bạn có thể sử dụng hàm NS2 (chỉ cần viết code 1 lần).
 
cảm ơn bạn ptlong04x1 mình đã vào vbe và giải được bài toán mà mình cần hỏi rồi
cảm ơn bạn nhé
thanks and best regards!
 
Web KT

Bài viết mới nhất

Back
Top Bottom