【发布时间】:2020-10-14 04:19:51
【问题描述】:
我想创建一个甘特图摘要,从包含多行不同人员活动列表的详细甘特图中按天和单行显示一个人的整个“忙碌”和“空闲”日程安排.
基本上从这个出发:
至此:(我手动创建的)
能够总结人们在活动之间的空闲时间轮班。
现在我只是使用这个公式来比较每一行中的开始日期和结束日期,如果条件为真则产生一个“1”,然后我只是对整个甘特单元格进行条件格式化。
=IF(AND(Q$8>=$N12,DAY($K12)<>DAY($J12)),1,IF(AND(Q$8>=$N12-0.00001,Q$8<$O12-0.00001),1,""))
我不知道如何开始。我正在考虑做巢的事情:
- 创建一个表格,其中包含要添加到甘特图中的所有可能人员的姓名。
- 对宏进行编程以使用相同的模板创建新工作表。
- 编写一个循环,以每个人的姓名开始迭代:
- 对于甘特图中要汇总的每个人的姓名,开始在他们安排了活动的每一天创建新行(我还不知道我将如何迭代)。
- 在每个人的循环中,开始迭代原始工作表上的每一行,评估每个开始和结束日期,并在新工作表的当前人员当前日期行上粘贴“1”,如果条件在相应的时间里是真的。
- 循环直到每个人的所有个人活动都完成。
- 与下一个人继续。
我想知道这是否合乎逻辑,如果您有任何指针或类似代码要回收,我不精通 VBA 和 Excel 宏。
【问题讨论】:
-
不确定我是否理解正确。因此,您在“完成”时间之后在每个单元格中使用您的公式(我称之为“图表单元格”)并格式化那些值为 1 的单元格,对吗?如果是这样,只需使用
=sumif([name range], "[each name]", [for each column of the chart cells]),然后,只需使用值>0 进行相同的条件格式化。然后,它是一个摘要图表。根据您的使用情况,您可以有不同的方法来提取名称范围内的唯一名称。 -
@OliverLeung 完全正确。 SUMIF 肯定会解决为每个名称汇总所有内容的问题。我怎么能白天提取它并自主添加其他人?
标签: excel vba powerquery schedule gantt-chart