Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存在值时Excel VLOOKUP返回#不适用_Excel_Excel Formula_Vlookup - Fatal编程技术网

存在值时Excel VLOOKUP返回#不适用

存在值时Excel VLOOKUP返回#不适用,excel,excel-formula,vlookup,Excel,Excel Formula,Vlookup,我正在为学校体育赛事创建一个电子表格,根据每个学生所获得的时间/距离/身高/等来授予分数。参考数据表表示每个事件可用的点,但不包括每个值,即点与一系列值相关。例如:1.00m至1.04m之间的距离可获得x分;距离在1.05和1.09之间的y点;等等。范围不一致。用户将在电子表格中输入每个学生的准确时间/距离/身高/等,并且公式应自动计算分数 我使用嵌套的IF(COUNTIF(VLOOKUP公式: 在参考数据表中搜索输入的值(如2.18),如果存在,则返回点值。如果不存在 …将该值减少0.01(

我正在为学校体育赛事创建一个电子表格,根据每个学生所获得的时间/距离/身高/等来授予分数。参考数据表表示每个事件可用的点,但不包括每个值,即点与一系列值相关。例如:1.00m至1.04m之间的距离可获得x分;距离在1.05和1.09之间的y点;等等。范围不一致。用户将在电子表格中输入每个学生的准确时间/距离/身高/等,并且公式应自动计算分数

我使用嵌套的
IF(COUNTIF(VLOOKUP
公式:

  • 在参考数据表中搜索输入的值(如2.18),如果存在,则返回点值。如果不存在

  • …将该值减少0.01(即2.17),然后重试,如果存在,则返回点值。如果不存在

  • …将该值减少0.02(即2.16),然后重试,如果存在,则返回点值。如果不存在

  • …将该值减少0.03(即2.15),然后重试

  • …等,直到返回值。最大范围为0.05,因此不超过5个循环

    =IF(距离,D4),VLOOKUP(距离,D4,A$4:$B$13,2,假),IF(距离,D4-0.01),VLOOKUP(距离,D4-0.01,A$4:$B$13,2,假),IF(距离,D4-0.02,VLOOKUP(距离,D4-0.02,$B$13,2,假),IF(距离,D4-0.03,$B$13,2,假),VLOOKUP(距离,D4-0.03,$B$13,2,假)

  • 该公式似乎有效,但经过测试,尽管存在匹配项,但仍有许多值返回N/a。返回N/a的值似乎没有模式。使用公式计算和错误检查无助于提供答案。我已经尝试了所有常用技巧–确保格式(文本/数字/常规)是一致的;检查空格,验证公式中的值与VLOOKUP表中的值完全相同–所有值都正常且正确,但#N/A值仍然随机返回。 链接到下面的数据图像。
    对正在发生的事情有什么想法,或者是否有更雄辩的公式


    您可以使用
    索引
    匹配
    VLookup
    来完成此操作。下面是我使用的代码,用于查找最接近的值并在第二行中找到匹配项。(您可能需要更改表名和列表名。)

    =索引(表点,匹配(VLOOKUP(B2,表点,表点,真),表点,0),2)

    编辑(只要您将查找表更改为以最小的数字和顶部点数升序,此代码应该适用于您的准确工作簿示例):

    =索引($A$4:$B$13,匹配(VLOOKUP(D4,$A$4:$B$13,1),$A$4:$A$13),2)

    其中表_点是整个表(距离和点),列表_点只是距离列表


    如果您需要更多说明,请告诉我。

    您可以使用
    索引
    匹配
    VLookup
    。下面是我使用的代码,它查找最接近的值并在第二行中找到匹配项。(您可能需要更改表名和列表名。)

    =索引(表点,匹配(VLOOKUP(B2,表点,表点,真),表点,0),2)

    编辑(只要您将查找表更改为以最小的数字和顶部点数升序,此代码应该适用于您的准确工作簿示例):

    =索引($A$4:$B$13,匹配(VLOOKUP(D4,$A$4:$B$13,1),$A$4:$A$13),2)

    其中表_点是整个表(距离和点),列表_点只是距离列表


    如果您需要更多的澄清,请告诉我。

    您可能遇到的一个问题是,VLookup要使用您正在搜索的表,必须按升序。您可能遇到的一个问题是,VLookup要使用您正在搜索的表,必须按升序。谢谢-这非常有效,而且更加优雅。对于之前的问题是什么-为什么返回了#N/A。我正在查看它,但在测试后也无法找出它。如果您认为这个答案是好的,那么最好有一个向上投票来向其他人发出有用的信号。很高兴我能帮上忙!我已经尝试过了,但作为一个新用户,它说我的向上投票还没有显示出来。感谢您的支持HelpThank-这非常有效,而且更加优雅。仍然很好奇之前的问题是什么-为什么N/A被返回。我看着它,在测试后也无法找出它。如果你认为这个答案是好的,那么最好有一个向上的投票来向其他人表明它是有帮助的。很高兴我可以帮助你!我已经尝试过了,但是作为一个例子一个新用户说我的投票还没有显示出来。谢谢你的帮助