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 有什么帮助吗?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
多亏了有两个内置函数可以实现您想要的功能-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的频率,会怎么样呢。