所以基本上我有一个 Excel 表,其中包含许多不同的 ID、日期和一列,我想根据 FIRST ID 日期在第三列中指定开始中间或结束。但是,这只适用于相同 ID 的块。当下一个 ID 通过时,块中第一个 ID 的日期将决定第 3 列的其余部分,以此类推。
在查看数据集时可以更好地理解这个问题。
ID DATE formula_col
10R46 10/8/2011
10R46 2/18/2012
10R46 6/30/2012
10R47 2/4/2010
10R47 5/16/2010
10R47 8/8/2010
10R47 12/11/2010
10R47 1/4/2011
10R48 6/26/2011
10R48 9/11/2011
10R48 1/29/2012
10R48 4/20/2012
10R48 7/8/2012
正如你在这里看到的。有一组连续的 ID,我需要“formula_col”来读取第一个日期的开头,其余日期将遵循以下规则:
第一个月是开始,下个月是中间,下个月是结束,然后重复。
因此,如果第一个月是二月 (2),那么这些 ID 的公式将是: 二月:三月初:四月中旬:五月底:六月中旬 七月中旬:八月底:九月初:十月中旬:十一月底:十二月初: Middle January: End 任何都可能出现,不一定是开始、中间、结束的顺序。但它们将始终按日期顺序排列,在 ID 结束之前不会回到过去等。
因此,对于上述数据集,它将是:
ID DATE formula_col
10R46 10/8/2011 Beginning
10R46 2/18/2012 Middle
10R46 6/30/2012 End
10R47 2/4/2010 Beginning
10R47 5/16/2010 Beginning
10R47 8/8/2010 Beginning
10R47 12/1/2010 Middle
10R47 1/4/2011 End
10R48 6/26/2011 Beginning
10R48 9/11/2011 Beginning
10R48 1/29/2012 Middle
10R48 4/20/2012 Middle
10R48 7/8/2012 Middle
澄清一下:身份证的第一个日期将决定哪些月份是开始、中间和结束。
如果第一个月是 1 月、4 月、7 月或 10 月,这是我创建的代码。但这并不是我想要的,只是一个开始。
=IF(OR(MONTH(B2)=1,MONTH(B2)=4, MONTH(B2)=7,MONTH(B2)=10),"Beginning",IF(OR(MONTH(B2)=2,MONTH(B2)=5, MONTH(B2)=8,MONTH(B2)=11),"Middle",IF(OR(MONTH(B2)=3,MONTH(B2)=6, MONTH(B2)=9,MONTH(B2)=12),"End",NA)))
所以棘手的部分是月份模式的开始取决于唯一 ID 的第一个条目。然后它开始遵循仅适用于该 ID 的规则。当出现下一个 ID 时,规则会根据第一个 ID 的日期重置。它们将始终是连续的,尽管我不想依赖它。
欢迎使用 VBA 解决方案