全文约2250字;
阅读时间:约8分钟;
听完时间:约12分钟;
通过使用 LET 函数定义中文名称参数,我们增强了Excel&WPS公式的可读性和简化了逻辑判断。这一过程涵盖了几个关键步骤:首先对完工时间和开工时间进行初步条件判断;接着,在满足一定条件下(如开工时间大于等于第一天累计出勤),计算每日产能;同时确保完工时间处于合理区间内;
并通过乘法运算符*代替AND逻辑来处理更复杂的多重条件组合。这些步骤生成的逻辑值(1代表TRUE, 0代表FALSE)随后被IF函数利用,用于接下来的全自动排程动态数组表格的设计。
第8次判断这次的判断还是基于订单的完工时间的,也就是完工时间大于第一天累计。录入公式:
=LET(累计出勤,P3#,完工时间,O5#,开工时间,N5#,第二天累计,DROP(累计出勤,,1),第一天累计,DROP(累计出勤,,-1),完工时间>第一天累计)
这些TURE的结果将用于后续的IF多重判断。
第1次IF判断录入公式:
=LET(UPH,L5#,出勤工时,P2#,累计出勤,P3#,完工时间,O5#,开工时间,N5#,订单用时,M5#,第二天累计,DROP(累计出勤,,1),第一天累计,DROP(累计出勤,,-1),IF((完工时间<=第一天累计)+(开工时间>=第二天累计),"",FALSE))
这次IF判断的主是目的是把符合条件的结果转成空值。
第2次IF判断在第1次的结果FALSE中录入IF函数
=LET(UPH,L5#,出勤工时,P2#,累计出勤,P3#,完工时间,O5#,开工时间,N5#,订单用时,M5#,第二天累计,DROP(累计出勤,,1),第一天累计,DROP(累计出勤,,-1),IF((完工时间<=第一天累计)+(开工时间>=第二天累计),"",IF((开工时间>=第一天累计)*(完工时间<第二天累计),订单用时/24,FALSE)))
这部分的目的是识别那些能够在一天内完成的订单,并计算其所需的时间(以天为单位)。
第3次IF函数在第2次IF函数的结果FALSE中录入公式:
=LET(UPH,L5#,出勤工时,P2#,累计出勤,P3#,完工时间,O5#,开工时间,N5#,订单用时,M5#,第二天累计,DROP(累计出勤,,1),第一天累计,DROP(累计出勤,,-1),IF((完工时间<=第一天累计)+(开工时间>=第二天累计),"",IF((开工时间>=第一天累计)*(完工时间<第二天累计),订单用时/24,IF((开工时间>=第一天累计)*(开工时间<第二天累计),第二天累计-开工时间,IF((完工时间>第一天累计)*(完工时间<第二天累计),完工时间-第一天累计,出勤工时/24)))))
这次判断的核心是处理那些不能在一天内完成的订单。如果订单可以在一天内完成,则计算时间为“订单用时/24”;对于不能在一天内完成的订单,根据具体情况计算工作时间,即“第二天累计-开工时间”或“完工时间-第一天累计”。若以上条件都不满足,则默认使用“出勤工时/24”作为该订单的工作时间。这样就可以得出每张订单需要的实际完成时间。
时间转换产能前面的三次IF判断,已经把每张订单需要完成的实际时间计算出来了,现在需要把这些信息转换成订单数量,也就是产能,录入公式:
通过将时间乘以24小时换算成工时,并进一步乘以每小时单位产量(UPH),得到每天的排程数量。在此过程中,如果遇到错误值或小数位,则需要进行相应的处理。
取整屏蔽错误把公式更改为:
=LET(UPH,L5#,出勤工时,P2#,累计出勤,P3#,完工时间,O5#,开工时间,N5#,订单用时,M5#,第二天累计,DROP(累计出勤,,1),第一天累计,DROP(累计出勤,,-1),IFERROR(ROUND(IF((完工时间<=第一天累计)+(开工时间>=第二天累计),"",IF((开工时间>=第一天累计)*(完工时间<第二天累计),订单用时/24,IF((开工时间>=第一天累计)*(开工时间<第二天累计),第二天累计-开工时间,IF((完工时间>第一天累计)*(完工时间<第二天累计),完工时间-第一天累计,出勤工时/24)))*24*UPH),0),0))
此公式中,使用了四舍五入函数ROUND来对结果的小数部分进行取整(参数0表示不保留小数),同时使用了IFERROR函数来捕获任何可能出现的错误,并将其替换为0。
至此,一个全自动的动态数组排程系统已设计完毕,具备以下功能:
l 无需手动填充公式即可自动排程。
l 更新数据后可实时增加生产线。
l 更新日历后可实时调整出勤工时。
l 更新UPH(每小时单位产量)后可实时调整产能。
l 支持多条生产线、多个日期以及多种数据情况下的全自动扩展动态排程。
如果你是第一次阅读这篇文章,建议从第一篇开始,因为整个公式包含了多次IF判断,并结合了AND和OR逻辑,同时还需要输入一些基础数据。以下是整体的总结:
输入报表:
一、工作日历 - 用于排程中的工时判断。
二、订单数据 - 作为主生产计划(MPS)排程的基础数据。
三、标准工时 - 用来引用每小时单位产量(UPH)。
输出报表:
一、《动态数组自动排程表》 - 根据输入的数据自动生成的排程结果。
通过这些输入报表提供的信息,系统能够自动处理复杂的排程逻辑,包括但不限于时间与产能之间的转换、不同条件下的产能计算等,从而生成一个全面且灵活的《动态数组自动排程表》。
最后总结通过运用LET函数定义中文名称参数,我们不仅增强了Excel和WPS公式的可读性,还简化了复杂的逻辑判断过程。整个排程系统的设计覆盖了从初步的时间条件判断到最终产能计算的全过程,确保了订单能够被合理安排在可用的工作时间内。通过对完工时间、开工时间和累计出勤等关键因素的多层IF判断,系统能够自动识别并处理不同情况下的订单需求,包括那些可以在一天内完成的订单以及需要跨越多个工作日才能完成的订单。
为了将计算出的实际完成时间转换为具体的产能数值,我们进一步引入了时间换算与四舍五入取整的方法,并通过IFERROR函数来处理可能出现的错误值。这使得系统能够在保持高精度的同时,也具备了良好的容错能力。
最终,这个全自动动态数组排程系统实现了无需手动填充公式即可自动生成排程结果的功能。它支持实时的数据更新与调整,无论是增加生产线、更改工作日历还是修改UPH(每小时单位产量),都能够即时反映在排程表中。此外,该系统还具有强大的扩展性,可以适应多条生产线、多个日期以及多种数据类型的需求,从而为生产计划提供了极大的灵活性和效率。总之,这套基于复杂逻辑判断和高效数据处理的排程解决方案,为企业提供了一个强大而便捷的工具,以优化其生产和调度流程。