我有一组数据表示故障频率取决于公称管道直径。参见下表。(第一行是公称直径 - DN,第二行是每个DN的故障频率)
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 :(得分:0)
有两个内置函数可以执行您想要的操作 - VLOOKUP从垂直列表中查找值,HLOOKUP从水平列表中查找值。您的查找是水平的,因此请使用HLOOKUP。
参数如下:
=HLOOKUP(value, table_array, row_index)
其中value是要查找的值,表数组是查找表的范围,row_index是表中包含结果的行。
如果你想查找200的值,你的表在D3到I4,而查找的值在第2行,你将使用以下公式
=HLOOKUP(200, D3:I4, 2)
答案 1 :(得分:0)
要进行线性插值以查找不在查找中的数字x的值y,您需要计算以下值
下一个最低x值xlower
下一个最低y值,ylower
下一个最高的x值,xhigher
下一个最高y值,yhigher
然后变成
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)