搜索

这个公式有什么问题?

=IFS(I10>110%,110%,110%>=I10>105%,I10,105%>=I10>100%,100%,100%>=I10>60%,I10,60%>=I10,60%) 在105%>=I10>100%,100%这个条件始终输出的是I10它本身的值,按公式应该输出100%才对,哪里有问题呢
头像
3743 次浏览2024.08.08 提问
50

最新回答(4条回答)

头像
2024.08.18 回答

在Excel中,IFS 函数用于根据一个或多个条件返回不同的结果,但每个条件必须单独评估,并且不支持像某些其他编程语言中的链式比较(如 105% >= I10 > 100%)。在Excel中,这样的链式比较不会按你期望的方式工作,因为它实际上会被解析为 (105% >= I10) > 100%,这会导致逻辑上的错误。

在你的公式中,105% >= I10 > 100% 这样的表达式并不按你期望的方式(即检查 I10 是否在105%和100%之间)来评估。为了修复这个问题,你需要将条件拆分为两个单独的比较,并使用逻辑运算符(如 AND)来组合它们。但是,由于 IFS 函数不支持逻辑运算符直接作为条件,你需要使用嵌套的 IF 函数或改用 IFS 函数但分别评估每个条件。

然而,由于 IFS 函数不支持复杂的逻辑组合,使用 IF 函数可能更直接和清晰。下面是一个使用 IF 函数的示例,该示例实现了你的逻辑:

excel复制代码

=IF(I10>110%, 110%, IF(I10>105%, 100%, IF(I10>100%, 100%, IF(I10>60%, I10, 60%))))    

这个公式首先检查 I10 是否大于110%,如果是,则返回110%。如果不是,则进一步检查是否大于105%,但这里我们注意到,如果 I10 大于105%,我们实际上应该返回 I10 的值(但你的原始逻辑是返回100%,这可能是一个错误),不过按照你的原始意图(即105%到110%之间也返回100%),我们保持为100%。然后,如果 I10 大于100%但不大于105%,我们也返回100%。如果 I10 大于60%但不大于100%,我们返回 I10 的值。最后,如果 I10 不大于60%,我们返回60%。

如果你的意图是当 I10 在105%到110%之间时返回 I10 的值(而不是100%),那么你应该调整第一个 IF 之后的条件:

excel复制代码

=IF(I10>110%, 110%, IF(I10>105%, I10, IF(I10>100%, 100%, IF(I10>60%, I10, 60%))))    

请注意,在这个修改后的版本中,当 I10 大于105%时,我们直接返回 I10 的值。

抢首赞
头像
匿名用户
2024.08.14 回答

在你提供的公式中,条件的顺序和逻辑有点混乱。IFS 函数的每个条件应按从最高到最低的顺序排列,且每个条件应是单独的逻辑表达式。你需要确保每个条件正确地描述了它应覆盖的范围。试试这个修正后的公式:

excelCopy Code

=IFS(I10 > 110%, 110%, I10 > 105%, 105%, I10 > 100%, 100%, I10 > 60%, 60%, TRUE, I10)

这样可以确保每个条件只覆盖其指定的范围,并且每个条件的结果正确地输出。

抢首赞
头像
2024.08.10 回答

您提供的公式 `IFS` 函数在 Excel 中用于根据一系列条件进行逻辑判断,并返回第一个为真的条件对应的结果。然而,您的公式中存在几个问题和潜在的误解,特别是在条件表达式的书写上。

首先,`IFS` 函数的语法如下:

```excel

IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], ...)

```

每个 `logical_test` 必须是返回布尔值(TRUE 或 FALSE)的表达式,而 `value_if_true` 是当对应 `logical_test` 为 TRUE 时要返回的值。

您的公式中的条件 `105%>=I10>100%` 和 `100%>=I10>60%` 这样的写法在 Excel 中并不直接支持作为单个逻辑测试。Excel 不会直接解析这样的链式不等式为一个单一的布尔值。相反,您需要将它们拆分为两个独立的测试,并使用 `AND` 函数来组合它们。

此外,您的公式中 `I10>110%` 和 `I10>60%` 使用了 HTML 编码的 `>`,这在 Excel 公式中应该直接使用 `>`。

修正后的公式可能如下所示:

```excel

=IFS(

    I10 > 1.1, 1.1,

    AND(I10 >= 1.05, I10 < 1.1), 1,

    AND(I10 >= 1, I10 < 1.05), I10,

    AND(I10 >= 0.6, I10 < 1), I10,

    I10 < 0.6, 0.6

)

```

注意几个关键点:

1. 我将百分比转换为小数(例如,`110%` 变为 `1.1`)以符合 Excel 中数字比较的习惯。

2. 我使用了 `AND` 函数来组合两个条件,以检查 I10 是否在某个范围内。

3. 最后一个条件 `I10 < 0.6` 及其返回值 `0.6` 已经被添加,以确保当 I10 小于 60% 时返回 60%。如果您的逻辑不包括这种情况,可以省略它。

抢首赞
头像
2024.08.09 回答
105%>=I10>100%写错了,IFS只能有一个比较运算符,>=和>是两个比较运算符。=IFS(I10>110%,110%,I10>105%,I10,I10>100%,100%,I10>60%,I10,10<=60%,60%),这样写就对了。
抢首赞
置顶