如何在MS Project中创建包含船舶与燃料的复合资源组?
在MS Project中实现船舶+燃油绑定资源的方案
一、基础资源预配置
- 创建工时资源:为每艘船舶及不同工况单独创建资源,比如
Vessel_1、Vessel_1 航行、Vessel_1 作业、Vessel_2等,在「资源信息」-「成本」标签页设置对应日费率。 - 创建材料资源:为不同工况的燃油消耗创建专属材料资源,比如
Fuel_V1_航行(单位:吨)、Fuel_V1_作业、Fuel_V2_航行等,在「资源信息」中设置燃油单价。
二、绑定船舶与燃油的核心实现方法
方法1:自定义字段+自动计算(支持单独统计燃油消耗)
- 给资源添加自定义字段:
- 打开「资源工作表」,右键插入列,选择数字类型自定义字段,重命名为
燃油日消耗量。 - 给每个船舶/工况资源填写对应数值,比如
Vessel_1 航行填3.5,Vessel_1 作业填4.2。
- 打开「资源工作表」,右键插入列,选择数字类型自定义字段,重命名为
- 任务端自动计算燃油成本:
- 打开「甘特图」任务工作表,插入成本类型自定义字段,命名为
燃油成本,设置公式:Sum(ResourceAssignment.[燃油日消耗量] * ResourceAssignment.[工时]/8 * [Fuel_V1_航行].StandardRate)(根据实际燃油资源名称调整)。 - 分配资源时,给任务同时分配对应船舶资源和燃油材料资源,系统会自动计算燃油成本。
- 打开「甘特图」任务工作表,插入成本类型自定义字段,命名为
方法2:整合燃油成本到船舶费率表(简化管理,无单独燃油统计)
- 针对分工况的船舶资源,直接将燃油成本折算到日费率中:
例如Vessel_1基础日费率5000元/天,航行时燃油日耗3.5吨、单价1000元/吨,则Vessel_1 航行的日费率设为5000 + 3.5*1000 = 8500元/天。 - 此方法无需单独添加燃油资源,修改时直接更新船舶费率即可同步所有关联任务。
方法3:资源组分组+批量更新(适合手动维护场景)
- 设置资源组:
- 在「资源工作表」的「资源组」列中,给绑定的船舶和燃油资源设置相同组名,比如
V1_航行组(包含Vessel_1 航行和Fuel_V1_航行)。
- 在「资源工作表」的「资源组」列中,给绑定的船舶和燃油资源设置相同组名,比如
- 批量更新操作:
- 修改船舶费率:筛选对应资源组,选中船舶资源直接修改,所有关联任务自动同步。
- 修改燃油消耗量:找到对应燃油资源调整消耗率,打开「任务分配状况」视图,筛选使用该燃油资源的任务,用「替换」功能批量更新分配数量。
三、分工况船舶资源的创建
- 直接创建独立工时资源:针对同一船舶的不同工况(航行/作业),分别创建
Vessel_1 航行、Vessel_1 作业资源,设置相同基础日费率、不同燃油日消耗量值。 - 或使用多费率表:给同一船舶资源设置多个费率表(在「资源信息」-「成本」标签页),A表对应航行工况、B表对应作业工况,任务分配时选择对应费率表即可切换成本模式。
四、自动化同步技巧
- 资源池管理:将船舶和燃油资源统一放在资源池中,所有关联项目共享资源数据,修改资源池内容后,所有项目的任务自动同步更新。
- VBA宏批量更新:若需要自动同步燃油消耗量与任务分配数量,可使用以下宏:
运行宏后,所有使用该船舶资源的任务会自动更新燃油分配量。Sub UpdateFuelAssignments() Dim targetRes As Resource Dim resAssign As ResourceAssignment Dim fuelAssign As ResourceAssignment Dim dailyFuel As Double ' 指定要更新的船舶资源 Set targetRes = ActiveProject.Resources("Vessel_1 航行") dailyFuel = targetRes.CustomFields("燃油日消耗量") ' 遍历该资源的所有任务分配,更新对应燃油资源的工作量 For Each resAssign In targetRes.Assignments For Each fuelAssign In resAssign.Task.Assignments If fuelAssign.Resource.Name = "Fuel_V1_航行" Then ' 按8小时工作日折算燃油量(单位:吨) fuelAssign.Work = resAssign.Work / 8 * dailyFuel fuelAssign.RemainingWork = fuelAssign.Work End If Next fuelAssign Next resAssign End Sub
内容的提问来源于stack exchange,提问作者Bobbo
相关产品推荐
相关产品推荐

