【问题标题】:Dividing a column into groups according to certain ranges根据一定的范围将列分组
【发布时间】:2023-04-08 18:16:02
【问题描述】:

(不确定我是否在正确的社区中,如果这个问题更适合另一个问题,请告诉我)。

无论如何,我想根据将在其旁边的列中查看的特定范围创建一个包含组号的新列。考虑了 vlookup 和 if 语句,它们实际上可以完成这项工作,所以我不必在 VBA 中创建一些东西,但它不起作用:

=if(AC487>=600;3;if(600>AC487>=300;2;if(300>AC487>=60;1;if(60>AC487>=-60;0;if(-60>AC487>=-300;-1;if(-300>AC487>=-600;-2;if(-600>AC487;-3)))))))

 

Column AC Column AD (expected results)
2304      3
 760      3
 467      2
1500      3
-500     -2
  10      0
  25      0
-146     -1
-249     -1
 132      1      

【问题讨论】:

  • 这个问题确实需要样本数据和预期结果。
  • 尝试用逗号替换分号。另外,打破你的双重条件检查,所以不要使用 -300>AC487>=-600,而是使用 AND(-300>AC487,AC487>=-600)
  • @Jeeped,我已插入样本数据和预期结果。
  • @Gordon K,谢谢你的回答。我已经尝试按照您的建议进行操作(如果我理解正确的话),但它不起作用: =IF(AC487>=600,3 AND(600>AC487, AC487>=300,2 AND(300>AC487, AC487>=60,1 AND(60>AC487, AC487>=-60,0 AND(-60>AC487, AC487>=-300,-1 AND(-300>AC487, AC487>=-600,-2 AND (-600>AC487,-3)))))))

标签: excel function excel-formula


【解决方案1】:

试试这个:

=IF(AC487>=600,3,IF(AND(600>AC487,AC487>=300),2,IF(AND(300>AC487,AC487>=60),1,IF(AND(60 >AC487,AC487>=-60),0,IF(AND(-60>AC487,AC487>=-300),-1,IF(AND(-300>AC487,AC487>=-600),-2, -3)))))))

【讨论】:

    【解决方案2】:

    当一个条件被测试时,它将证明是真还是假。如果为真,则返回适当的结果。如果为假,则考虑下一个条件。在第二次评估中没有理由重复第一个条件(已经证明是错误的)。

    =IF(AC487>=600, 3,
         IF(AC487>=300, 2,
         IF(AC487>=60, 1,
         IF(AC487>=-60, 0,
         IF(AC487>=-300, -1,
         IF(AC487>=-600, -2, -3))))))
    

    第二个 IF 不必评估它是否小于 600。我们知道它小于 600,因为第一个 IF 失败并将控制权交给了第二个。

    备用非 IF:

    =LOOKUP(AC487,
          {-1E+99,-600,-300,-60,60,300,600},
          {-3,-2,-1,0,1,2,3})
    

    (是的,您可以在公式中添加换行符以帮助理解它。)

            

    【讨论】:

    • 这就是我最初开始 if 语句的方式,但最后我一定忘记了“-3”。不管怎样,谢谢你的回复。
    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2021-06-03
    • 2022-11-20
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多