none
excel中match函数出错bug RRS feed

  • 问题

  • B1的1.9是通过=A2-A1得来的,D4是对B列进行排序,=IF(B1>C1,1,MATCH(C1,B1:B9,1)),当C1=1.9时,最终出现了问题;

    通过改变F1和F2的数据,让G1等于1.8(F2-F1),H1=1.8,I4是对G列进行排序,=IF(G1>H1,1,MATCH(H1,G1:G9,1)),最终得到"1";
    L1则是通过=K1得来,K1-L1=1.9,N4对L列进行排序,=IF(L1>M1,1,MATCH(M1,L1:L9,1)),最终得到"1"

    由于无法传图片,只能通过文字描述,不知道有没有把问题交代清楚!请问这是不是excel的bug?如果不是请解释一下什么原因?


    2020年6月12日 8:34

全部回复

  • 你好,

    感谢你的反馈。因为新注册的账户可能需要验证账户后才可以贴图和分享超链接,你可以到这个论坛找与“Verify Accounts”相关标题的帖子使用英文回复申求账户验证,等论坛管理员处理好之后,你就可以上传图片了,请耐心等待。

    目前,根据你的描述,我无法构造出能够复现你当前遇到这个问题的数据,所以无法为你进一步分析出现这个问题的原因。为了帮助你解决这个问题,还需要向你进一步确认信息:

    请问你当前使用的Excel版本是什么呢?你可以点击 文件 > 账户,查看到具体的产品信息,点击“关于 Excel”查看到具体的版本号。

    MATCH对查找范围或者区域内单元格数字格式类型和数值升降顺序非常敏感的。就以你描述刚开始的举例(A、B、C、D四列),请问请检查B列的数据类型以及数值格式精度设置(如设置小数位数);其中B1=A2-A1,检查A2和A1的数据值(如果设置了小数位数,点击单元格,检查公式栏数值,手动验证下是否差的真实值是否是1.9),举个例子,如果A2的真实值是5.92,而A1值是4.01,那么B1的计算的真实值就是1.91,如果你B列设置1位小数,就会出现显示结果为1.9,C1设置的真实值为1.9,那么虽然B1和C1都显示为1.9,其实B1>C1。这样D4==IF(B1>C1,1,MATCH(C1,B1:B9,1)),则会输出1.

    另外,对于MATCH(lookup_value, lookup_array, [match_type]),如果你设置MATCH的匹配类型match_type为1,MATCH 查找小于或等于 lookup_value 的最大值。 lookup_array 参数中的值必须以升序排序,否则会输出不正确的值。请问你在对B列进行排序后,B列中的数据是否是按照升序排列呢(是否扩展选定区域呢)?B1中的值是否被排到下面了呢?如果是这样之前B1=A2-A1使用了相对引用,这个公式会在排序之后改变引用的数据而发生变化,也会影响最终的结果。

    更多信息,参考MATCH 函数Excel 中的浮点运算可能提供不准确的结果

    如果要补充进一步的信息,请在下方回复以让我们知道,我会在收到你的信息后,继续为你分析这个问题。

    Herb


    如果以上回复对您有所帮助,建议您将其标记为答复。如果您对我们的论坛支持有任何的建议,可以通过此邮箱联系我们:tnmff@microsoft.com.

    点击了解更多或者访问我们的 专用论坛,与我们的技术专家一起分享探索 Microsoft Office 2019。

    2020年6月15日 5:25
    版主