首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我尝试使用duplicate and if条件将列中的单元格值减少1

我尝试使用duplicate and if条件将列中的单元格值减少1
EN

Stack Overflow用户
提问于 2021-02-01 04:21:23
回答 1查看 28关注 0票数 0

我正在开发一个库存补充工具。如果E列显示领料,而A列中的条形码重复,则单元格值(仓库库存)应从C列中减1,否则C列中的WH库存值相同。请查找所附屏幕截图:

我尝试过的公式,IF(E3="PICK",IF(COUNTIF($A$3:$A$9,$A3)>1,C3-E3=(A1),C3))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 05:03:47

这是一个嵌套的IF公式,必须使用Ctrl+ Shift + Enter确认。此外,您不希望使用整个列引用,而是使用具有定义的行号的引用,否则工作簿将变得非常慢。

代码语言:javascript
复制
=IF(E3="PICK",IF(COUNTIF($A$3:$A3,$A3)>1,MIN(IF($A$2:A2=A3,$D$2:$D2))-1,IF(COUNTIF($A$3:$A3,$A3)=1,C3-1)),MIN(IF($A$2:A2=A3,$D$2:$D2)))

请注意引用中$符号的位置。范围引用的第一行将在行号前面有一个$符号,如$D$2,因此范围始终从第2行开始。但是范围的结束是可变的,这取决于当前行,并且行号前面没有$符号。这样,您就可以根据当前行上方的行中的值进行计算。

让我们来分析一下。

当E列中的单元格为"Pick“时,该公式计算当前行上方和包含的多少行的代码与当前行相同。如果大于1,我们有一个重复的代码,所以公式将使用D列中具有相同区号的行的最小值,然后减1。

但是,如果这是区号第一次出现,该公式将从同一行的C列中提取库存值并减去1。

它处理E列中"Pick“值的所有可能性。

如果E列不是"pick",那么我们只需要D列上面的行的最小值,其中区号与A列相同。

如果你有Office365,你可以使用MinIFS函数而不是Min( If ())构造,并且你不需要使用Ctrl + Shift + Enter (即使你使用第一个公式)。

代码语言:javascript
复制
=IF(E7="PICK",IF(COUNTIF($A$3:$A7,$A7)>1,MINIFS($D$2:D6,$A$2:$A6,A7)-1,IF(COUNTIF($A$3:$A7,$A7)=1,C7-1)),MINIFS($D$2:D6,$A$2:$A6,A7))

严格地说,如果区号是第一次出现,那么您不需要最里面的嵌套,但当公式在您的脑海中不再新鲜时,它有助于理解业务逻辑。您可以将其缩短为此(Office 365版本)

代码语言:javascript
复制
=IF(E3="PICK",
IF(COUNTIF($A$3:$A3,$A3)>1,
    MINIFS($D$2:D2,$A$2:$A2,A3)-1,
    C3-1),
MINIFS($D$2:D2,$A$2:$A2,A3))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65983841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档