我有一組數據表示失敗頻率取決於管道公稱直徑。參見下表(第一行是公稱直徑 - DN,第二行是每個DN的失效頻率)vba循環遍歷並迭代
50,150,300,450,600,900
3.8E-05,1.7E-05,1.6E-05,1.5E-05,1.5E-05,1.5E-05
我需要做的是循環這些數據並計算所選DN(表外)的合適故障頻率,比如DN 200.
有什麼幫助嗎? 謝謝
我有一組數據表示失敗頻率取決於管道公稱直徑。參見下表(第一行是公稱直徑 - DN,第二行是每個DN的失效頻率)vba循環遍歷並迭代
50,150,300,450,600,900
3.8E-05,1.7E-05,1.6E-05,1.5E-05,1.5E-05,1.5E-05
我需要做的是循環這些數據並計算所選DN(表外)的合適故障頻率,比如DN 200.
有什麼幫助嗎? 謝謝
有兩個內置函數可以做你想做的事 - VLOOKUP從垂直列表和HLOOKUP查找值,從水平列表中查找值。你的查找是水平的,所以使用HLOOKUP。
的參數如下:
=HLOOKUP(value, table_array, row_index)
這裏value是你想查找的數值,表數組是查找表的範圍和ROW_INDEX是包含結果表中的行。
如果你想查找200的價值和你的表是在D3到I4和查找值是行號2,你會用下列公式
=HLOOKUP(200, D3:I4, 2)
做線性插值找到一個數x,是不是在查找y的值,你需要計算以下值
下一個最低的x值,xlower
下一個最低的y值,ylower
下一個最高的x值,xhigher
下一個最高的y值,yhigher
y,則成爲
y=ylower + (((x-xlower)/(xhigher-xlower))*(yhigher-ylower))
就可以計算出每一種,而不訴諸VBA
xlower = HLOOKUP(x,[lookuptable],1)
HLOOKUP將返回下一個最低值,如果它沒有找到確切的值
ylower = HLOOKUP(x,[lookuptable],2)
index_of_next_highest = MATCH(xlower, [range of x values] + 1)
xhigher = INDEX([range of x values],index_of_next_highest)
yhigher = INDEX([range of y values],index_of_next_highest)
謝謝。這是方便的功能。但是如果我只有150和300的直徑,並且想要在相應的頻率之間會聚並計算直徑200的頻率,該怎麼辦? – kolis29