我有一组数据如下:
在“最新”列中,我想为MAX(StepNumber)打印“Latest”,其中对于每个ManufacuringOrderId,tracked =“Yes”。我可以尝试在SQL中执行此操作,但也想看看我是否可以使用数组公式。因此,如果这样做,第9行会说“最新”,而从第4行开始的第4行也会说“最新”。
我尝试了公式{=MAX(IF(A:A=[@ManufacturingOrderId],F:F))}
返回每个ManufacturingOrderId
的最大步骤编号,公式{=MAX(IF([@Tracked]="Yes",IF(A:A=[@ManufacturingOrderId],F:F)))}
将返回每个制造ID的最大步骤编号,该编号包含一个流程步骤跟踪。
但是,我无法找到一种方法来确定每个制造订单ID跟踪流程步骤的最大步骤编号。对于制造订单ID 5601774,步骤编号为160,对于MOID 5624276,步骤编号为150.
帮助和谢谢!
答案 0 :(得分:0)
如果我已正确理解了这个问题,那么你应该能够在MAX内部和两个条件(每行与当前行具有相同的ID并且它被跟踪)。然后检查该号码是否与当前StepNumber
匹配,如果是,则说“最新”。
{=IF(MAX(IF(AND(A:A=[@ManufacturingOrderId], [@Tracked]="Yes"),F:F)) = [@StepNumber], "Latest", "")}
答案 1 :(得分:0)
使用此数组公式,当Tracked为“是”时,您可以获取每个OrderId的MAX步长编号
=MAX(IF([ManufacturingOrderId]=[@ManufacturingOrderId],IF([Tracked]="Yes",[StepNumber])))
....所以要在正确的行中获得“最新”,您需要检查不仅Stepnumber =该值,而且该行中也存在“Yes”,即
=IF(AND([@StepNumber]=MAX(IF([ManufacturingOrderId]=[@ManufacturingOrderId],IF([Tracked]="Yes",[StepNumber]))),[@Tracked]="Yes"),"Latest","")
使用CTRL + SHIFT + ENTER确认
修订版:此版本应该更高效 - 使用两个IF
,而不是AND
意味着公式的长MAX(IF
部分只需要在[Tracked]="Yes"
=IF([@Tracked]="Yes",IF([@StepNumber]=MAX(IF([ManufacturingOrderId]=[@ManufacturingOrderId],IF([Tracked]="Yes",[StepNumber]))),"Latest",""),"")
[注意AND此处用于检查2个单个结果条件,不在数组部分内]