索引匹配与间接匹配和部分匹配?
Index Match with Indirect and partial match?
我有一个 Ztable,我想根据我得到的任何 Zscore 在公式中用作查找。我的 Z 得分为 0.84,table 的工作方式是,您查看第一列 0.8,然后转到第 0.04 列,因为这是 0.84 的小数点后第二位(因此它们合并),然后您可以进行查找值。
我正在尝试使用索引匹配公式来实现这一点,但由于某种原因它拒绝工作,即使公式的所有部分单独工作都很好:
Excel在线示例: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))
你不需要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))
将第二列header由0
改为0.00
,否则将找不到小数点后一位的值。
简短的回答是 '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 是对的,可能有更好的方法可以不使用 Indirect。
我有一个 Ztable,我想根据我得到的任何 Zscore 在公式中用作查找。我的 Z 得分为 0.84,table 的工作方式是,您查看第一列 0.8,然后转到第 0.04 列,因为这是 0.84 的小数点后第二位(因此它们合并),然后您可以进行查找值。
我正在尝试使用索引匹配公式来实现这一点,但由于某种原因它拒绝工作,即使公式的所有部分单独工作都很好: Excel在线示例: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))
你不需要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))
将第二列header由0
改为0.00
,否则将找不到小数点后一位的值。
简短的回答是 '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 是对的,可能有更好的方法可以不使用 Indirect。