vba循环遍历行并迭代

时间:2014-03-25 08:07:06

标签: excel-vba vba excel

我有一组数据表示故障频率取决于公称管道直径。参见下表。(第一行是公称直径 - 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。

有任何帮助吗? 感谢

2 个答案:

答案 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)