excel VLOOKUP函数未返回正确值,索引匹配也不正确,用户错误?

2cmtqfgy  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(129)

在Excel 2019中工作。与我之前的一个问题相同,我正在使用一个数据库,我试图通过函数来查找该数据库以获得我的值。VLOOKUP工具在查找时间表以找到我需要的值时运行良好,但在我试图查找RPM作为查找值时却不起作用。以下是数据的要点。
我们有时间(秒,“PPT_156数据”表中的A:A)、RPM(同一表中的B:B)和压力(同一表中的巴,C:C)。
从图中可以看出,我们在大约60秒的时间内加速到8000 RPM,然后在接下来的30秒内减速到0 RPM。不同泵的测试时间和速度会有所不同,因为每台泵会根据泵的不同给予不同的数据值。这就是为什么1000 RPM不会每次都在同一个位置。
我试图找到1000到8000的RPM间隔,并报告所述间隔的压力。
这是我目前所做的尝试,也包括图像。
'不管你是否看到W25为S25,我只是尝试了很多事情首先,我尝试了相同的VLOOKUP代码,我已经做了时间表之前

=VLOOKUP(S25,PPT156_Data!B:C,2,TRUE)  'S25 being lookup value

这工作得很好,直到它碰到一个特定的点。由于某种原因,只要它试图找到一个近似匹配的6663 RPM,它就出错并给出不正确的数据。从那时起,一直到8000 RPM,它只会给出0.139BAR的结果。我不知道为什么。试图在返回数组中找到这个值会给出多个结果,但它并不是唯一的值。
因此,我尝试使用以下代码为它设置通配符

=VLOOKUP("*"&S25&"*",PPT156_Data!B:C,2,FALSE)   'Attempted both False and True states

两个值均为N/A。不确定是否在此处输入了不正确的通配符。RPM可以进入的小数位数范围在2-5之间(百分之一到百分之十,IE 7000.00750)
然后我想也许索引匹配会起作用。

=INDEX(PPT156_Data!B:C,MATCH(S25,PPT156_Data!B:B,-1),2)

我也尝试了通配符格式,但没有返回任何结果。因此,我决定看看是否可以通过以下尝试来匹配RPM的值

=MATCH(S25,PPT_Data156!B:B,-1)

但是,当把匹配规范设置为1时,它给出了数据集中的最后一行。所以,我决定在列B中找到一个值,并试图与它精确匹配。

=MATCH(7000.07,PPT_Data156!B:B,0)

这也没有返回任何结果。尽管如此,您可以在我的图像中看到,值绝对存在。SIGFIG显示它是7000.1,但相信我,它是7000.07。所以这有点让我陷入循环。我想可能有不同的错误,抓住稻草,尝试另一个索引匹配公式,这一次减去查找值以试图使其非常接近

=INDEX(PPT156_Data!C:C,MATCH(MIN(ABS(PPT156_Data!B:B-S25)),ABS(PPT156_Data!B:B-S25),1))

我很困惑。我不确定是不是因为利率的上升和下降,所以不是按升序排列,造成了问题?我不能改变这一点。我想我可能需要以某种方式为此创建一个宏?也许是一个帮助表?但我甚至找不到创建帮助表的匹配值。任何帮助都将非常感激。谢谢你花时间看我的帖子。
第一个月

5sxhfpxr

5sxhfpxr1#

我假设你想要的第一个压力阅读时,转速击中以上每1000间隔。我得到了一个解决方案,但感觉有点复杂。

=index(C:C,1/max(iferror(1/(row(B:B)*(B:B>E12)),Null)))

将其分解,我们将创建一个布尔数组,其中RPM高于区间

=B:B>E12

然后乘以列B的行的数组

row(B:B)*(B:B>E12)

它为我们提供了一个当RPM高于E12时的行号数组,但对于所有不高于E12的行号也为零。

=iferror(1/(row(B:B)*(B:B>E12)),Null)

然后,我们通过除法和替换为null来强制一个带有零的错误。我们得到了最大值,因为我们对行号求逆,然后再次求逆以得到行号。

=index(C:C,1/max(iferror(1/(row(B:B)*(B:B>E12)),Null)))

【Excel工作截图】【1】【1】:https://i.stack.imgur.com/uhcaX.png

相关问题