基于特定数字范围之间的单元格值的Excel公式是什么?

时间:2018-12-29 10:35:19

标签: excel excel-formula excel-2016

我正在使用Excel 2016,并且需要基于单元格W2的值的单元格C2的公式,并具有以下逻辑:

if cell C2 is between 1 and 10, then it should output "R",
if cell C2 is between 11 and 20, then "B",
if cell C2 is between 21 and 30, then "Y",
if cell C2 is between 31 and 40, then, "G"

我正在修改IF(AND ..)公式,但是我做错了。

这就是我现在拥有的:

=IF(C2<=10,"R",IF(AND(C2>10,C2<=20,"B"),IF(AND(C2>20,C2<=30),"Y",IF(AND(C2>30,C2<=40),"G","!"))))

5 个答案:

答案 0 :(得分:3)

我认为您应该改为执行以下操作(例如,使用VLOOKUP):

=VLOOKUP(ROUNDUP(C2, -1), $C$4:$D$7, 2, FALSE)

哪里

enter image description here

避免使用深度嵌套的if-else语句。我的意思是,如果需要20个字母,该怎么办? 20级嵌套的if-else语句?不。

答案 1 :(得分:2)

简短:

library(purrr)
list(A = data_frame(ID = c(101, 102, 103),
                    x = c(1,2,3)),
     B = data_frame(ID = c(101, 102, 103),
                    x = c(4,5,6)),
     C = data_frame(ID = c(101, 102, 103),
                    x = c(7,8,9))) %>% 
  imap(.x = ., ~ set_names(.x, c("ID", .y))) %>% 
  reduce(dplyr::left_join, by = "ID")
# A tibble: 3 x 4
#     ID     A     B     C
#  <dbl> <dbl> <dbl> <dbl>
#1   101     1     4     7
#2   102     2     5     8
#3   103     3     6     9

答案 2 :(得分:1)

这应该可以解决问题:

=IF(C2<=10,"R",IF(AND(C2>10,C2<=20),"B",IF(AND(C2>20,C2<=30),"Y",IF(AND(C2>30,C2<=40),"G","!"))))

您始终可以通过双击功能建议来仔细检查功能,并查看是否正确使用了所有括号:

enter image description here

答案 3 :(得分:0)

经典IF和

=IF(C2<=10,"R",IF(AND(C2>10,C2<=20),"B",IF(AND(C2>20,C2<=30),"Y",IF(AND(C2>30,C2<=40),"G","!"))))

答案 4 :(得分:0)

您的原始公式遇到一个常见问题,即IF语句“ short-circuits”;也就是说,一旦其中一个嵌套的IF条件成立,就不再进行任何嵌套的计算。如果通过了第一个IF,则第二个IF不需要检查C2是否大于10;否则,无需检查。实际上,必须为> 10,否则将永远不会达到第二个IF。这种逻辑一直延续到其余的嵌套IF。

list

请注意,您的叙述状态为'em>'如果单元格C2在1到10之间,那么它应该输出“ R”',但是您的公式计算出的简单'小于或等于10' 还包括零和负数。

您还可以“硬编码”查找。

=IF(C2<=10, "R", IF(C2<=20, "B" , IF(C2<=30, "Y", IF(C2<=40, "G", "!"))))