【问题标题】:Excel match function producing inconsistent resultsExcel 匹配函数产生不一致的结果
【发布时间】:2018-10-23 20:02:04
【问题描述】:

stackoverflow.com 中的以下问题已阅读但没有帮助:
1. excel 公式 - INDEX(MATCH()) 的行为不一致
2. excel - 为什么Application.Match() 不一致?
3. Excel 索引匹配的不可预测的输出
4. Excel 匹配(小于)函数行为不一致
5. excel - 为什么Application.Match() 不一致?
6.工作表函数——Excel中返回的公式不一致

我需要了解并纠正在电子表格中的不同LOOKUP_ARRAYs 中使用match_type 1MATCH 函数行为不一致的原因

为了进一步澄清问题,我在match 函数的相关描述下方粘贴了match_type 1

Match-type:1 或省略

行为:MATCH 查找小于或等于 lookup_value 的最大值。 lookup_array 参数中的值必须按升序排列

当我执行以下操作时:

Command                                Result
---------------------------------------------

=CORRESP(96;{0;91,2;92,8;94,4;96};1)   5                
=CORRESP(72;{0;69;70;71;72};1)         5                

以上结果是正确的,我不质疑。

在链接中的简单电子表格中,我在四个范围内重现了匹配函数 =MATCH(LOOKUP_VALUE,LOOKUP_ARRAY,1) 的用法:PVcPVTPDcTPD,并且在多个单元格中具有不同的值,但问题仅出现在 LOOKUP_ARRAYS TPDcTPD 中的 LOOKUP_VALUE 72

我相信这个问题在链接中的 Excel 文件中有清楚的解释。

https://1drv.ms/x/s!AlpItI7re-Sdi_NP8XD-TVxkPXVbhw

【问题讨论】:

  • 您的文件/数据示例应该是一个参考,但问题/您尝试过的/预期的输出仍应在问题的措辞中进行解释。
  • 我可以访问。 @DarrenBartrup-Cook 不能。但这并没有改变他的其他评论。仅链接问题不适用于本论坛。请用公式的例子解释问题以及它在问题的措辞中做错了什么,链接作为备份而不是整个问题。
  • 我确实阅读了有关 Excel 的 MATCH 文档,@ImaginaryHuman072889。我建议您查看文件内部和问题描述。问题是它匹配在相同的情况下会产生不同的结果。
  • 正如其他人所说,根据文档,公式 =MATCH(H4,PVc,1) 的行为正确。但是,=MATCH(H9,TPDc,1)不是。请注意,TPDc 列表中的第一个 72.0 值位于索引 5,而不是公式返回的 4。此外,当我在单元格H9 中重新输入72 时,公式按预期返回12。出于某种原因,我无法解释,Excel 将 H9 .. N9 视为 72 在TPDc 范围内(直到重新输入值)
  • @ScottCraner,我完全改写了这个问题,希望现在可以解除保留。

标签: excel excel-formula


【解决方案1】:

存储在 Excel 工作表中的值存在问题。如果我下载它并解压(只需将*.xlsx 重命名为*.zip),在xl/worksheets/sheet1.xml 文件中有以下内容:

<row r="9" spans="1:26">
  <c r="A9" s="3" t="s">
    <v>8</v>
  </c>
  <c r="B9" s="5">
    <v>0</v>
  </c>
  <c r="C9" s="5">
    <v>67.833333333333314</v>
  </c>
  <c r="D9" s="5">
    <v>68.666666666666643</v>
  </c>
  <c r="E9" s="5">
    <v>69.499999999999972</v>
  </c>
  <c r="F9" s="5">
    <v>70.3333333333333</v>
  </c>
  <c r="G9" s="5">
    <v>71.166666666666629</v>
  </c>
  <c r="H9" s="5">
    <v>71.999999999999957</v>
  </c>
  <c r="I9" s="5">
    <v>71.999999999999957</v>
  </c>
  <c r="J9" s="5">
    <v>71.999999999999957</v>
  </c>
  ...
</row>

我不知道您的 Excel 是如何创建的,但显然存储的数字不准确。

只需尝试转到单元格 H9 并输入 72Enter。然后重新计算单元格H10H11 并包含预期结果。

正如 Antoine de Saint-Exupéry 建议的那样:

重要的东西是肉眼看不见的。

换句话说,如果您觉得 Excel 给您带来了意想不到的结果,请始终深入了解 :) 您可以查看另一个可以以相同方式解决的奇怪行为示例:https://stackoverflow.com/a/49731873/2886891

【讨论】:

  • 您是对的 Honza,我按照您的指示更改了单元格 H9 中的值并得到了正确的结果。但是现在 Excel 产生了错误的结果。如果在单元格 H9 中输入 72 之前,您只需在任何其他单元格中输入“=72 = H9”,则返回 TRUE。
  • 虽然您的解释说明了为什么会出现这种不一致,但它确实不能解决 Match 函数的问题。如果您在任何单元格中键入 "= 72 = H9",则结果为 True,表明 Excel 匹配功能确实存在缺陷。有没有办法避免这个问题?
  • 我过几天回到我的 Windows 电脑上用 Excel 看看。
猜你喜欢
  • 2021-11-01
  • 2012-01-16
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 2017-08-18
  • 2019-12-06
相关资源
最近更新 更多