擅长使用单元格引用作为逻辑运算符并查找值

我有一个表来查找这样的值:

logical test | points -------------|------- <= 0 | 1 <= 10 | 2 <= 20 | 4 > 20 | 5 

如果我的单元格(例如A1)<= 0,结果是1 …
如果我的单元<= 10,结果是2 …
如果我的单元格大于20,结果是5。

我可以使用几个如果function,但我想要防止用户不得不改变公式,如果表更改。 例如,如果出于某种原因,第一行变为> 0,则不需要更改公式。
我已经尝试在if函数内使用concatenate(mycell;logical_operator;logical_value) ,但它似乎不工作,我更喜欢没有VBA的解决scheme…
有什么build议么?

我知道你希望能够改变运营商的types。 我假设你正在使用的唯一操作符是数字比较:<,<=,=,> =,>

这是更容易设置与命名范围。 根据我的屏幕截图设置运营商,价值观和得分范围的名称。

例如,我的运营商范围是“$ C $ 2:$ C $ 5”,价值是“$ D $ 2:$ D $ 5”,评分是“$ E $ 2:$ E $ 5”

然后,使用这个数组公式得到A1中的值的分数。

 =INDEX(Scores,MATCH(TRUE,IF(Operators="<",A1<Values,(IF(Operators="<=",A1<=Values,IF(Operators="=",A1=Values,IF(Operators=">=",A1>=Values,A1>Values))))),0)) 

我把这个公式放到单元格A3中。

注意:这是一个数组公式。 您需要以特殊方式input:双击到单元格中,粘贴公式,然后按CTRL-SHIFT-ENTER。 每次编辑公式时都需要这样做,只有在需要编辑条件范围时才需要这样做。 如果这样做是正确的,当您select单元格时,公式栏将显示公式自动放置在公式周围的{花括号}。

公式检​​查C列中的哪个运算符,然后对列D执行适当的比较。它针对每个条件执行此操作,并find第一个为TRUE的条件。 然后它返回该条件的分数。

如果有多个匹配条件,则只返回第一个匹配条件的分数。 如果没有匹配条件,则返回#N / A。 (或者,如果在条件范围内有空白行,它将返回0.)

布局

我可能会误解你的问题,所以让我知道这是不是正确的,但这看起来像是非正确的查找/匹配和查找表正确的用例。

假设你有一张桌子。 然后,你可以在查询表中查询你的值(在你的例子中是a1),最后一个参数是1而不是0(它告诉Excel查找小于或等于你提供的值的值,而是确切的提供价值。

这意味着,在你给出的将<= 0改为> 0的例子中,你将不得不知道你想要的0范围的结束点。 如果你想要任何大于0的值来返回一个值,那么你将不得不删除所有后续的值。

这实际上给你的权力离开公式完整无需改变它,而你只改变查询表。

下面是一个例子,可以看到我在说什么:

在这里输入图像说明

正如你在原来的文章中所述,如果基础值改变,这将实际上工作,但它必须改变某种types。 你的表必须被sorting,间隔必须被很好地定义,格式为[x1,x2],[x3,x4]等等。只要你能控制表格的格式,你应该能够执行此。

如果您的input值在单元格A1则在单元格B1键入以下公式:

=IF(A1<=0,1,IF(A1<=10,2,IF(A1<=20,4,IF(A1>20,5))))

在我的例子中,我填写列A单元格A1A28值0到27,并将此公式从B1复制到B28其中包含以下testing结果:

在这里输入图像说明