2014-03-25 200 views
0

我有一組數據表示失敗頻率取決於管道公稱直徑。參見下表(第一行是公稱直徑 - 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.

有什麼幫助嗎? 謝謝

回答

0

有兩個內置函數可以做你想做的事 - VLOOKUP從垂直列表和HLOOKUP查找值,從水平列表中查找值。你的查找是水平的,所以使用HLOOKUP。

的參數如下:

=HLOOKUP(value, table_array, row_index) 

這裏value是你想查找的數值,表數組是查找表的範圍和ROW_INDEX是包含結果表中的行。

如果你想查找200的價值和你的表是在D3到I4和查找值是行號2,你會用下列公式

=HLOOKUP(200, D3:I4, 2) 
+0

謝謝。這是方便的功能。但是如果我只有150和300的直徑,並且想要在相應的頻率之間會聚並計算直徑200的頻率,該怎麼辦? – kolis29

0

做線性插值找到一個數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)