Excel vba循环行并迭代

Excel vba循环行并迭代,excel,vba,Excel,Vba,我有一组数据,表示故障频率取决于标称管道直径。见下表。(第一行是标称直径-DN,第二行是每个DN的故障频率) 50150300450600900 3.8E-05、1.7E-05、1.6E-05、1.5E-05、1.5E-05、1.5E-05 我需要做的是遍历这些数据,并计算所选DN(表外)的适当故障频率,比如DN 200 有什么帮助吗? 多亏了有两个内置函数可以实现您想要的功能-VLOOKUP可以从垂直列表中查找值,HLOOKUP可以从水平列表中查找值。您的查找是水平的,因此请使用HLOOKUP

我有一组数据,表示故障频率取决于标称管道直径。见下表。(第一行是标称直径-DN,第二行是每个DN的故障频率)

50150300450600900

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是要查找的值,table array是查找表的范围,row_index是包含结果的表中的行

如果您想查找200的值,并且您的表位于D3到I4,并且要查找的值位于第2行,那么您可以使用以下公式

=HLOOKUP(200, D3:I4, 2)

要执行线性插值以查找不在查找中的数字x的值y,需要计算以下值

下一个最低的x值,xlower

下一个最低的y值为y

下一个最高的x值,xhigher

下一个最高的y值,y高

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的频率,会怎么样呢。