使用公式在Excel中对数据进行分类

时间:2014-06-19 22:55:51

标签: excel excel-formula conditional-statements

我试图根据月份和日期(一年中的某个时间)将每一行分类为x,y或z。我的类别是:

  • X = 6月1日 - 10月1日
  • Y = 11月15日 - 4月15日
  • Z =所有其他

我意识到这可能很简单,但我似乎无法使公式恰到好处。我看到的表格如下:

  

日月年度测试
  7 5 2012 Z
  6 5 2013 Z
  2011年11月11日   4 6 2013 Z
  27 5 2013 Z
  14 3 2013 Z
  14 5 2014 Z
  20 10 2013 Z
  5 12 2013 Z

我目前的“测试”公式是:

= IF(AND(与(B2> = 6,A2> = 1),和(b2< = 10,A2< = 1)), “X”,IF(OR(AND(B2< = 4, A2< = 15),和(b2> = 11,A2> = 15)), “Y”, “Z”))

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

未经测试(预期结果会有所帮助)请尝试:

=IF(OR(AND(B2<5,A2<16),AND(B2=11,A2>14),B2=12),"Y",IF(OR(AND(B2>5,B2<10),AND(B2=10,A2=1)),"X","Z"))

答案 1 :(得分:1)

您的公式不起作用的原因是您同时测试月份和日期 - 例如,

IF(AND(B2<=4,A2<=15)

将在3月16日返回false,即使您希望它为真。这是因为你的公式不理解“日和月”的概念。

我将使用的公式是

=IF(AND(DATE(C2,B2,A2)>=DATE(C2,6,1),DATE(C2,B2,A2)<DATE(C2,10,1)), "X",
    IF(OR(DATE(C2,B2,A2)>=DATE(C2,11,15),DATE(C2,B2,A2)<DATE(C2,4,15)), "Y", "Z"))

注意 - 我添加了一个不应该真正存在的回车以使其更具可读性。

另请注意,我的公式计算DATE(C2,B2,A2)次数很多次,将其作为单独的(隐藏)列可能会很好。关于这个表达式的好处是它使用内置的DATE函数来理解几个月和几天 - 并且根据日期范围标准来修复它是相对容易的。根据您的考试日期,它提供以下内容:

Day  Month  Year   Test
 7     5    2012     Z
 6     5    2013     Z
 2    11    2011     Z
 4     6    2013     X
27     5    2013     Z
14     3    2013     Y
14     5    2014     Z
20    10    2013     Z
 5    12    2013     Y

注意 - @pnuts指出错误后更新...

另请注意......上面总共有4个条件 - 我在决定包含哪些日期时采取了一些自由。基本上,我将您的要求翻译如下:

date >= Nov 15 of this year          ==> "Y"
date < April 15 of this year         ==> "Y"
date >= June 1 AND date < Oct 1      ==> "X"
else "Z"

这可能不是完全你想要什么,但是表达方式应该是显而易见的,你应该能够根据需要进行调整(特别是不清楚4月15日是否应该例如,“Y”或“Z”的一部分。)

我认为定义一系列变量(可能在隐藏的工作表上)是有用的

startXmonth = 4
startXday = 15
stopXmonth = 10
stopXday = 1

等,然后您可以在公式中使用这些名称而不是“魔术数字”。这样,如果您决定要更改与特定关税相对应的日期范围,您可以在合理的位置更改它,而不是隐藏在公式中的某个位置。你现在可能认为这是额外的工作,但你以后会感谢我......

最后,您可能希望使用<=>=制作所有日期“最多和包含”,并定义第一天和最后一天(而不是如上所述,第一天包括并且第一天不包括在内。)

如果这一切都有意义,请告诉我。