IF/OR 公式,复合到简化 |我想要简化、缩小范围,并随着 Excel 工作表上的信息更新而拥有一个不断发展的单元格

问题描述 投票:0回答:2

我有一个单元格,当数据更改、删除或添加到工作表主体中时,我需要它不断发展。 (工作表名称“Carton DIM Calculator”)我有一个非常大的 IF/OR 公式,我怀疑它很快就会达到字符最大点。因此,在此之前我想修复它,但我不确定从哪里开始。另外,为了补充原因,我需要修复它,每次我必须更改工作表上的信息时,我都必须手动更改公式。这很耗时,而且现在更新变得越来越麻烦。最初只是几个 If/Or,但我们的装运箱已从大约 10 个盒子尺寸增加到 58 个盒子尺寸。

公式的要点是根据用户输入的尺寸返回指定的盒子尺寸。是的,我们有一个系统,可以在客户下订单时执行此操作,并且该系统的运行率达到 99% 完美无缺。但这一侧用于在仓库到达时或当我们需要将某些东西运送到客户订购一侧之外时设置新库存。

我不确定我当前的要求是否可以实现,或者我是否必须在信息更改时手动更新。

以下是我目前的公式:

公式在单元格 F2 中 公式所调用的信息介于 B4 - G4 到 B61 - G61

=IF(OR(B2=0,C2=0,D2=0,B2="",C2="",D2=""),"Pending",
 IF(AND((G2<=G4)*(B2<=B4-0.25)*(C2<=C4-0.25)*(D2<=D4)),"#ENV",
 IF(AND((G2<=G5)*(B2<=B5-0.25)*(C2<=C5-0.25)*(D2<=D5)),"#99",
 IF(AND((G2<=G6)*(B2<=B6-0.25)*(C2<=C6-0.25)*(D2<=D6)),"ENV5",
 IF(AND((G2<=G7)*(B2<=B7-0.25)*(C2<=C7-0.25)*(D2<=D7)),"ENV2",
 IF(AND((G2<=G8)*(B2<=B8-0.25)*(C2<=C8-0.25)*(D2<=D8)),"ENV3",
 IF(AND((G2<=G9)*(B2<=B9-0.25)*(C2<=C9-0.25)*(D2<=D9)),"ENV4",
 IF(AND((G2<=G10)*(B2<=B10-0.25)*(C2<=C10-0.25)*(D2<=D10)),"#30",
 IF(AND((G2<=G11)*(B2<=B11-0.25)*(C2<=C11-0.25)*(D2<=D11)),"#04",
 IF(AND((G2<=G12)*(B2<=B12-0.25)*(C2<=C12-0.25)*(D2<=D12)),"#02",
 IF(AND((G2<=G13)*(B2<=B13-0.25)*(C2<=C13-0.25)*(D2<=D13)),"#49",
 IF(AND((G2<=G14)*(B2<=B14-0.25)*(C2<=C14-0.25)*(D2<=D14)),"#46",
 IF(AND((G2<=G15)*(B2<=B15-0.25)*(C2<=C15-0.25)*(D2<=D15)),"#10_1",
 IF(AND((G2<=G16)*(B2<=B16-0.25)*(C2<=C16-0.25)*(D2<=D16)),"#09",
 IF(AND((G2<=G17)*(B2<=B17-0.25)*(C2<=C17-0.25)*(D2<=D17)),"#10",
 IF(AND((G2<=G18)*(B2<=B18-0.25)*(C2<=C18-0.25)*(D2<=D18)),"#43",
 IF(AND((G2<=G19)*(B2<=B19-0.25)*(C2<=C19-0.25)*(D2<=D19)),"#06",
 IF(AND((G2<=G20)*(B2<=B20-0.25)*(C2<=C20-0.25)*(D2<=D20)),"#45",
 IF(AND((G2<=G21)*(B2<=B21-0.25)*(C2<=C21-0.25)*(D2<=D21)),"#03_1",
 IF(AND((G2<=G22)*(B2<=B22-0.25)*(C3<=C22-0.25)*(D2<=D22)),"#13_1",
 IF(AND((G2<=G23)*(B2<=B23-0.25)*(C2<=C23-0.25)*(D2<=D23)),"#03",
 IF(AND((G2<=G24)*(B2<=B24-0.25)*(C2<=C24-0.25)*(D2<=D24)),"#48",
 IF(AND((G2<=G25)*(B2<=B25-0.25)*(C2<=C25-0.25)*(D2<=D25)),"#42",
 IF(AND((G2<=G26)*(B2<=B26-0.25)*(C3<=C26-0.25)*(D2<=D26)),"#13",
 IF(AND((G2<=G27)*(B2<=B27-0.25)*(C2<=C27-0.25)*(D2<=D27)),"#05",
 IF(AND((G2<=G28)*(B2<=B28-0.25)*(C2<=C28-0.25)*(D2<=D28)),"#08",
 IF(AND((G2<=G29)*(B2<=B29-0.25)*(C2<=C29-0.25)*(D2<=D29)),"#07_1",
 IF(AND((G2<=G30)*(B2<=B30-0.25)*(C2<=C30-0.25)*(D2<=D30)),"#41",
 IF(AND((G2<=G31)*(B2<=B31-0.25)*(C2<=C31-0.25)*(D2<=D31)),"#33_1",
 IF(AND((G2<=G32)*(B2<=B32-0.25)*(C2<=C32-0.25)*(D2<=D32)),"#22",
 IF(AND((G2<=G33)*(B2<=B33-0.25)*(C2<=C33-0.25)*(D2<=D33)),"#26_1",
 IF(AND((G2<=G34)*(B2<=B34-0.25)*(C2<=C34-0.25)*(D2<=D34)),"#32_1",
 IF(AND((G2<=G35)*(B2<=B35-0.25)*(C2<=C35-0.25)*(D2<=D35)),"#25_1",
 IF(AND((G2<=G36)*(B2<=B36-0.25)*(C2<=C36-0.25)*(D2<=D36)),"#14_2",
 IF(AND((G2<=G37)*(B2<=B37-0.25)*(C2<=C37-0.25)*(D2<=D37)),"#07",
 IF(AND((G2<=G38)*(B2<=B38-0.25)*(C2<=C38-0.25)*(D2<=D38)),"#24_1",
 IF(AND((G2<=G39)*(B2<=B39-0.25)*(C2<=C39-0.25)*(D2<=D39)),"#32",
 IF(AND((G2<=G40)*(B2<=B40-0.25)*(C2<=C40-0.25)*(D2<=D40)),"#33",
 IF(AND((G2<=G41)*(B2<=B41-0.25)*(C2<=C41-0.25)*(D2<=D41)),"#21_1",
 IF(AND((G2<=G42)*(B2<=B42-0.25)*(C2<=C42-0.25)*(D2<=D42)),"#31",
 IF(AND((G2<=G43)*(B2<=B43-0.25)*(C2<=C43-0.25)*(D2<=D43)),"#20_1",
 IF(AND((G2<=G44)*(B2<=B44-0.25)*(C2<=C44-0.25)*(D2<=D44)),"#26",
 IF(AND((G2<=G45)*(B2<=B45-0.25)*(C2<=C45-0.25)*(D2<=D45)),"#24",
 IF(AND((G2<=G46)*(B2<=B46-0.25)*(C2<=C46-0.25)*(D2<=D46)),"#25",
 IF(AND((G2<=G47)*(B2<=B47-0.25)*(C2<=C47-0.25)*(D2<=D47)),"#21",
 IF(AND((G2<=G48)*(B2<=B48-0.25)*(C2<=C48-0.25)*(D2<=D48)),"#23_2",
 IF(AND((G2<=G49)*(B2<=B49-0.25)*(C2<=C49-0.25)*(D2<=D49)),"#14_1",
 IF(AND((G2<=G50)*(B2<=B50-0.25)*(C2<=C50-0.25)*(D2<=D50)),"#20",
 IF(AND((G2<=G51)*(B2<=B51-0.25)*(C2<=C51-0.25)*(D2<=D51)),"#15_1",
 IF(AND((G2<=G52)*(B2<=B52-0.25)*(C2<=C52-0.25)*(D2<=D52)),"#23_1",
 IF(AND((G2<=G53)*(B2<=B53-0.25)*(C2<=C53-0.25)*(D2<=D53)),"#14",
 IF(AND((G2<=G54)*(B2<=B54-0.25)*(C2<=C54-0.25)*(D2<=D54)),"#23",
 IF(AND((G2<=G55)*(B2<=B55-0.25)*(C2<=C55-0.25)*(D2<=D55)),"#15",
 IF(AND((G2<=G56)*(B2<=B56-0.25)*(C2<=C56-0.25)*(D2<=D56)),"#51X_2",
 IF(AND((G2<=G57)*(B2<=B57-0.25)*(C2<=C57-0.25)*(D2<=D57)),"#51X_1",
 IF(AND((G2<=G58)*(B2<=B58-0.25)*(C2<=C58-0.25)*(D2<=D58)),"#51X","OS3"
))))))))))))))))))))))))))))))))))))))))))))))))))))))))

图片帮助:

  1. B2-E2 是“用户”输入,F2 是上面的公式,G2 和 H2 一样有一个工作公式

B2-E2 are 'user' input, F2 is above formula, G2 has a working formula as does H2

  1. 这些通常对用户隐藏,并且这些单元格被锁定以防止任何人意外更改值
    细胞一瞥以及它们的样子

Cannot add entire image captured, but this is a glimpse of the cells and what they look like. These are usually hidden from user and these cells are locked to keep anyone from accidentally changing the values.

谢谢你。

我只是不断编辑当前的公式,但跟上和改变变得越来越麻烦。只是寻求有关如何解决此问题的帮助,但不知道从哪里开始。

excel if-statement excel-formula
2个回答
0
投票

如果维度并行增长,解决方案可能非常简单:

enter image description here

[F2]=INDEX(F5:F12,MIN(MATCH(B2,B5:B12,-1),MATCH(C2,C5:C12,-1),MATCH(D2,D5:D12,-1)),1)

如果维度不平行增长,则应应用更复杂的解决方案。正在建设中。


0
投票

尝试将数据过滤到所需的行,然后仅获取返回的第一行。

=IF(SUM($B$2:$D$2,$G$2)=0,"Pending",TAKE(FILTER($F$4:$F$61,($G$2<=$G$4:$G$61)*($B$2<=$B$4:$B$61-0.25)*($C$2<=$C$4:$C$61-0.25)*($D$2<=$D$4:$D$61)),1)) 

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.