使用INDEX(MATCH)

时间:2017-03-31 16:04:13

标签: excel excel-formula

请帮助解决以下问题:

在Excel中,我有这个表:

Processors by GHz

我有这个公式来查找“每个主机的核心数”和“每个主机的GHz数”的组合,它满足“每个主机所需的核心数”和“每个主机所需的GHz数”的值

=(INDEX(CPUData;MATCH(1;(CoresHost>C66)*(ghzHost>C36/C8);0);1))

其中CPUData是没有标题的表,CoresHost和ghzHost是包含上表中值的列的已定义名称。

该公式正在运行,但问题是,不是返回大于所需值的值,而是返回较小的值。

例如,如果符合要求或完全超出要求的处理器是E52630,它将返回E52643。

我尝试过使用-1和0,但我试过的任何组合都会给我一个错误或一个完全错误的值。

如何让它返回完全符合或超出要求的处理器?

1 个答案:

答案 0 :(得分:1)

假设您使用的是Excel表格(即{%load date_tags %})。如果是,请使用ListObject“BuiltIn Names”,而不是使用Defined Names

请尝试使用此公式:

ListObject

或者此变体将索引限制为=(INDEX(CPUData,MATCH(1, (CPUData[Cores per Host]>C66)*(CPUData[GHz per host]>(C36/C8)),0),1)) 列,而不是引用整个表:

Processor

它返回=(INDEX(CPUData[Processor], MATCH(1,(CPUData[Cores per Host]>C66)*(CPUData[GHz per host]>(C36/C8)),0),1)) ,其值如下: E52630E (2,2GHz, 10Cores) = 144; C66 = 144& C36 = 5

无论表格开头的空白记录如何,这都有效。