Excel MAX来自数据子集MAX IF IF

时间:2012-09-13 20:26:20

标签: arrays excel if-statement max

我有一组数据如下:

enter image description here

在“最新”列中,我想为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.

帮助和谢谢!

2 个答案:

答案 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个单个结果条件,不在数组部分内]