我正在尝试通过重复和 if 条件将列中的单元格值减少 1
I'm trying to reduce the cell value in the column by 1 with duplicate and if condition
我正在研究库存补货工具。如果 E 列显示 PICK 并且 A 列中的条形码重复,则单元格值(仓库库存)应从 C 列减少 1,否则 C 列中的 WH 库存值相同。
请找到随附的屏幕截图:
我试过的公式,
IF(E3="PICK",IF(COUNTIF($A$3:$A$9,$A3)>1,C3-ROW(A1),C3))
这是一个嵌套的 IF 公式,必须使用 Ctrl+ Shift + Enter 进行确认。此外,您不想使用整列引用,而是使用定义行号的引用,否则您的工作簿会变得很慢。
=IF(E3="PICK",IF(COUNTIF($A:$A3,$A3)>1,MIN(IF($A:A2=A3,$D:$D2))-1,IF(COUNTIF($A:$A3,$A3)=1,C3-1)),MIN(IF($A:A2=A3,$D:$D2)))
注意参考文献中 $ 符号的位置。范围引用的第一行将在行号前面有一个 $ 符号,如 $D$2,因此范围始终从第 2 行开始。但范围的结尾是可变的,具体取决于当前行,它不会在行号前有一个 $ 符号。这样您就可以根据当前行上方的行中的值进行计算。
我们来分解一下。
当E列单元格为“Pick”时,公式计算当前行以上(包括当前行)有多少行与当前行具有相同的代码。如果大于 1,则代码重复,因此公式将使用 D 列上方具有相同区号的行的最小值,然后减去 1。
但如果这是第一次出现区号,则公式会从同一行的 C 列中取股票值并减去 1。
这处理了 E 列中“选择”值的所有可能性。
如果E列不是“pick”,那么我们只需要D列上面各行的最小值,其中区号与A列相同
如果您有 Office 365,则可以使用 MinIFS 函数代替 Min(IF()) 构造,并且不必使用 Ctrl + Shift + Enter(即使您使用第一个公式也不必).
=IF(E7="PICK",IF(COUNTIF($A:$A7,$A7)>1,MINIFS($D:D6,$A:$A6,A7)-1,IF(COUNTIF($A:$A7,$A7)=1,C7-1)),MINIFS($D:D6,$A:$A6,A7))
严格来说,您不需要最内层嵌套的检查区号是否第一次出现的IF,但是当您对公式不再记忆犹新时,它有助于理解业务逻辑。您可以将其缩短为(Office 365 版本)
=IF(E3="PICK",
IF(COUNTIF($A:$A3,$A3)>1,
MINIFS($D:D2,$A:$A2,A3)-1,
C3-1),
MINIFS($D:D2,$A:$A2,A3))
我正在研究库存补货工具。如果 E 列显示 PICK 并且 A 列中的条形码重复,则单元格值(仓库库存)应从 C 列减少 1,否则 C 列中的 WH 库存值相同。 请找到随附的屏幕截图:
我试过的公式, IF(E3="PICK",IF(COUNTIF($A$3:$A$9,$A3)>1,C3-ROW(A1),C3))
这是一个嵌套的 IF 公式,必须使用 Ctrl+ Shift + Enter 进行确认。此外,您不想使用整列引用,而是使用定义行号的引用,否则您的工作簿会变得很慢。
=IF(E3="PICK",IF(COUNTIF($A:$A3,$A3)>1,MIN(IF($A:A2=A3,$D:$D2))-1,IF(COUNTIF($A:$A3,$A3)=1,C3-1)),MIN(IF($A:A2=A3,$D:$D2)))
注意参考文献中 $ 符号的位置。范围引用的第一行将在行号前面有一个 $ 符号,如 $D$2,因此范围始终从第 2 行开始。但范围的结尾是可变的,具体取决于当前行,它不会在行号前有一个 $ 符号。这样您就可以根据当前行上方的行中的值进行计算。
我们来分解一下。
当E列单元格为“Pick”时,公式计算当前行以上(包括当前行)有多少行与当前行具有相同的代码。如果大于 1,则代码重复,因此公式将使用 D 列上方具有相同区号的行的最小值,然后减去 1。
但如果这是第一次出现区号,则公式会从同一行的 C 列中取股票值并减去 1。
这处理了 E 列中“选择”值的所有可能性。
如果E列不是“pick”,那么我们只需要D列上面各行的最小值,其中区号与A列相同
如果您有 Office 365,则可以使用 MinIFS 函数代替 Min(IF()) 构造,并且不必使用 Ctrl + Shift + Enter(即使您使用第一个公式也不必).
=IF(E7="PICK",IF(COUNTIF($A:$A7,$A7)>1,MINIFS($D:D6,$A:$A6,A7)-1,IF(COUNTIF($A:$A7,$A7)=1,C7-1)),MINIFS($D:D6,$A:$A6,A7))
严格来说,您不需要最内层嵌套的检查区号是否第一次出现的IF,但是当您对公式不再记忆犹新时,它有助于理解业务逻辑。您可以将其缩短为(Office 365 版本)
=IF(E3="PICK",
IF(COUNTIF($A:$A3,$A3)>1,
MINIFS($D:D2,$A:$A2,A3)-1,
C3-1),
MINIFS($D:D2,$A:$A2,A3))