【问题标题】:Index Match with Indirect and partial match?索引匹配与间接和部分匹配?
【发布时间】:2020-05-10 11:11:55
【问题描述】:

我有一个 Ztable,我想根据我得到的任何 Zscore 将其用作公式中的查找。我的 Z 分数为 0.84,表格的工作方式是您查看 0.8 的第一列然后转到第 0.04 列,因为这是 0.84 的第二个小数(因此它们结合在一起),您将获得查找值。

我正在尝试使用索引匹配公式来实现这一点,尽管由于某种原因它拒绝工作,即使公式的所有部分单独工作都很好: Excel Online 中的示例:https://1drv.ms/x/s!ArOlf1rKamjocy6zekCl8cG3lAc?e=6ZzuTc

整个公式:

=1-
INDEX(
INDIRECT("Table1[0.0"&RIGHT(E2,1)&"]"),
MATCH(
LEFT(E2,(FIND(".",E2,1)+1)),
Table1[Z],0))

0.84放在E2中

另外,我从这个公式中得到 0.8:

=LEFT(E2,(FIND(".",E2,1)+1))

..我用这个公式得到了对第 0.04 列的引用:

=INDIRECT("Table1[0.0"&RIGHT(E2,1)&"]")

那么为什么索引匹配公式会失败?如果我把公式写得很干净,我会得到 0.7995:

=INDEX(Table1[0.04],MATCH(0.8,Table1[Z],0))

【问题讨论】:

    标签: excel lookup


    【解决方案1】:

    您不需要INDIRECT。试试这个公式:

    =INDEX(Table1[[0]:[0.09]],MATCH(ROUNDDOWN(E2,1),Table1[Z],0),MATCH(TEXT((E2-ROUNDDOWN(E2,1)),"0.00"),Table1[[#Headers],[0]:[0.09]],0))
    

    将第二列标题由0更改为0.00,否则将找不到小数点后一位的值。

    【讨论】:

      【解决方案2】:

      简短的回答是'Z'列中的值是数字,因此您需要在执行之前将字符串 LEFT(E2,(FIND(".",E2,1)+1)) 转换为数字查找:

      =1-INDEX(INDIRECT("Table1[0.0"&RIGHT(E2,1)&"]"),MATCH(--LEFT(E2,(FIND(".",E2,1)+1)),Table1[Z],0))
      

      但@basic 是正确的,可能有更好的方法来做到这一点而不使用间接。

      【讨论】:

      • 谢谢!所以“--”(双破折号)是转换为值的简写,或者我在这里缺少什么?这非常有效,但当我将“左”公式包装在 VALUE 公式中时,它不起作用。
      • 是的,值也有效 =1-INDEX(INDIRECT("Table1[0.0"&RIGHT(E2,1)&"]"),MATCH(VALUE(LEFT(E2,(FIND(" .",E2,1)+1))),Table1[Z],0))
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 2016-01-12
      • 2019-10-06
      • 2019-12-28
      • 1970-01-01
      • 2018-07-24
      • 2015-07-11
      相关资源
      最近更新 更多