Tra số liệu

Liên hệ QC

choncam

Thành viên mới
Tham gia
10/6/07
Bài viết
26
Được thích
7
Kính gửi các Anh/Chị, Tôi đang vướng mắc 1 vấn đề về tra số liệu trong đồ thị Excel, nhờ các Anh/Chị giúp đỡ, làm cách nào mà khi mình nhập giá trị X vào thì nó cho ra giá trị Y, hiện tại tôi phải in ra giấy và tra bằng tay rất thủ công mong các Anh/Chị chỉ giáo. Trân trọng cảm ơn.
 

File đính kèm

  • Tra dac tuyen.xls
    53.5 KB · Đọc: 115
Cái files bạn gửi kèm bị lỗi rồi, down về không mở được bạn a. Bạn post lại đi
 
Tôi gửi lại file do có Anh down không được.
 

File đính kèm

  • Tra so lieu.xls
    53.5 KB · Đọc: 115
Vẫn không được đâu bạn ạ
 
Việc trước tiên, a in đồ thị đó ra trên giấy (nhớ in cho lớn để nhìn cho rõ). Trên đồ thị vừa in ra giấy a chịu khó lập bảng tra 1 chiều theo thông số X và Y. Sau khi lập xong dùng hàm nội suy 1 chiều do các thành viên đã viết sẵn bỏ vào xài ----> giải quyết đúng theo y/c của a rồi đó. Code các hàm nội suy 1 chiều a có thể tham khảo dưới đây:
Function NS(table_array, Lookup_value)
Dim NumRows As Integer, i As Integer
Dim Max, Min
Dim Range1 As Range, Range2 As Range
NumRows = table_array.Rows.Count
Set Range1 = table_array.Columns(1)
Set Range2 = table_array.Columns(2)
If Lookup_value = Range1.Cells(NumRows) Then
NS = Range2.Cells(NumRows)
Exit Function
End If
Max = Range1.Cells(1)
Min = Range1.Cells(1)
For i = 1 To NumRows
If Max <= Range1.Cells(i) Then Max = Range1.Cells(i)
If Min >= Range1.Cells(i) Then Min = Range1.Cells(i)
Next i
If Lookup_value > Max Or Lookup_value < Min Then
NS = "Out of range" 'Evaluate("NA()")
Exit Function
End If
For i = 1 To NumRows - 1
If (Lookup_value >= Range1.Cells(i) And Lookup_value <= Range1.Cells(i + 1)) Or (Lookup_value <= Range1.Cells(i) And Lookup_value >= Range1.Cells(i + 1)) Then
If (Range1.Cells(i) - Range1.Cells(i + 1)) <> 0 Then
NS = (Range2.Cells(i + 1) + (Range2.Cells(i) - Range2.Cells(i + 1)) * (Lookup_value - Range1.Cells(i + 1)) / (Range1.Cells(i) - Range1.Cells(i + 1)))
Else
NS = Range2.Cells(i)
End If
Exit Function
End If
Next i
End Function

Function NoiSuy1(ByVal x1, x2, a1, a2, x3)
NoiSuy1 = a1 + ((a2 - a1) * (x3 - x1)) / (x2 - x1)
End Function

Function kp(ByVal x, y, bangtra As Range)
For i = 2 To UBound(bangtra.Value, 2)
For j = 2 To UBound(bangtra.Value, 1)
If (y = bangtra(1, i)) And (x = bangtra(j, 1)) Then
kp = bangtra(j, i)
End If

If (y = bangtra(1, i)) And (bangtra(j, 1) < x) And (x < bangtra(j + 1, 1)) Then
kp = NoiSuy1(bangtra(j, 1), bangtra(j + 1, 1), bangtra(j, i), bangtra(j + 1, i), x)
End If

If (x = bangtra(j, 1)) And (bangtra(1, i) < y) And (y < bangtra(1, i + 1)) Then
kp = NoiSuy1(bangtra(1, i), bangtra(1, i + 1), bangtra(j, i), bangtra(j, i + 1), y)
End If

If (bangtra(j, 1) < x) And (x < bangtra(j + 1, 1)) And (bangtra(1, i) < y) And (y < bangtra(1, i + 1)) Then
a = NoiSuy1(bangtra(1, i), bangtra(1, i + 1), bangtra(j, i), bangtra(j, i + 1), y)
b = NoiSuy1(bangtra(1, i), bangtra(1, i + 1), bangtra(j + 1, i), bangtra(j + 1, i + 1), y)
kp = NoiSuy1(bangtra(j, 1), bangtra(j + 1, 1), a, b, x)
End If
Next
Next
End Function
 
Web KT
Back
Top Bottom