使用 VBA 代码对开始和结束日期进行排序?

使用 VBA 代码对开始和结束日期进行排序?

我正在编写一些需要我执行的代码

  1. 删除任务的所有重复迭代

  2. 为每个任务的每次迭代选择最早开始日期和最晚结束日期

在左侧您可以看到我的数据是什么样的,而在右侧是我希望它看起来是什么样的。

我认为我可以让代码为每个任务#只留下唯一的值,但是我想不出办法获取每个任务的最早开始日期和最晚结束日期。

如您所见,由于数据的提取方式,任务# 有一些空值,这些空值并不重要,也需要丢弃。

如果有人能给我指明正确的方向,那将会很有帮助。

谢谢!

答案1

如果您需要查找开始和结束日期,则可以直接在工作表上使用公式,而无需使用 VBA。您可以组合MINIF函数来查找开始日期,然后组合MAXIF来查找结束日期。

查找开始日期

=MIN(IF($B$2:$B$17=G6,$C$2:$C$17))

查找结束日期

=MAX(IF($B$2:$B$17=G6,$D$2:$D$17))

在此处输入图片描述

编辑: 我根据@Yorik 的评论对公式进行了一些调整,即如果有多个项目,尽管项目不同,但任务的日期将相同。要查找唯一/不同的项目和任务,请使用该UNIQUE函数。IT 将在 2 列上显示结果。

=UNIQUE(A2:B22)

在此处输入图片描述

然后在相邻的列中输入以下公式。它将检查项目和任务,然后获取开始和结束日期。对于为空的日期,单元格将留空。

查找开始日期

=IF(G7<>0,MIN(IF($B$2:$B$22=G7,IF($A$2:$A$22=F7,C$2:$C$22))),"")

查找开始日期

=IF(G7<>0,MAX(IF($B$2:$B$22=G7,IF($A$2:$A$22=F7,C$2:$C$22))),"")

在此处输入图片描述

相关内容