Excel的IF语句中的范围

时间:2013-12-18 17:29:43

标签: excel function vba loops excel-vba

我正在为我的雇主制作一份自定义Excel电子表格。

我已经提出了一个非常讨厌的功能,可以实现我想要的功能,但我希望能够简化它。

我熟悉CC#Java。如果可能的话,我想避免使用VBA,但如果这是我唯一的选择,我可以考虑使用它。

我正在为制造工厂制定计划表,处理订单并从库存中扣除材料等。我为工厂生产的所有产品设置了页面。每种产品都使用不同的材料。我目前有一个讨厌的if语句,它检查2个表之间的匹配字符串,然后在找到匹配时用其他相关信息填充其他单元格。

我目前有一个包含20个条件的if语句!我永远不会在真正的程序中做这样的事情!

无论如何,我可以基本上循环遍历一系列细胞,直到找到匹配然后从那里开始?这是我正在尝试做的一个例子:

选项卡:MoldInformation - 包含工厂生产的产品的所有必要信息。 选项卡:订单 - 包含客户已下达的所有订单。

在Orders选项卡中,第一个单元格标题为Mold,用户将在其中输入字符串,然后在orders选项卡中,有关于生成订单所需的材料数量的信息。如果输入某个模具,则与该模具对应的材料将填充订单中的相应选项卡。

我的所有计算都很好,但我的if语句看起来像这样:

  

= IF(A3 = MoldInformation!$ A $ 3 E3 / MoldInformation!$ F $ 3,如果(A3 = MoldInformation!一个$ 4中,E3 / MoldInformation!$ F $ 4中,IF(A3 = MoldInformation!一个$ 5中,E3 / MoldInformation!$ F $ 5,IF(A3 = MoldInformation!一个$ 6中,E3 / MoldInformation!$ F $ 6中,IF(A3 = MoldInformation!甲$ 7,E3 / MoldInformation!$ F $ 7,IF(A3 = MoldInformation!A $ 8,E3 / MoldInformation!$ F $ 8,IF(A3 =模具信息!9澳元,E3 /模具信息!F $ 9,IF(A3 =模具信息!10美元,E3 /模具信息!F $ 10,IF(A3 =模具信息!11澳元,E3 /模具信息!F $ 11,IF(A3 =模具信息!12澳元,E3 /模具信息!F $ 12,IF(A3 =模具信息!13美元,E3 /模具信息!F $ 13,IF(A3 =模具信息!14美元,E3 /模具信息! F $ 14,IF(A3 =模具信息!15澳元,E3 /模具信息!F $ 15,IF(A3 =模具信息!16澳元,E3 /模具信息!F $ 16,IF(A3 =模具信息!17美元,E3 /模具信息!F $ 17 ,IF(A3 = MoldInformation!A $ 18,E3 / MoldInformation!F $ 18,IF(A3 =模具信息!A $ 19,E3 / MoldInformation!F $ 19,IF(A3 = MoldInformation!H $ 3,E3 / MoldInformation!M $ 3,IF (A3 = MoldInformation!H $ 4,E3 / MoldInformation!M $ 4,IF(A3 = MoldInformation!H $ 5 ,E3 / MoldInformation!M $ 5,IF(A3 =“”,“”)))))))))))))))))))))

这太可怕了!无论如何,我可以基本上让它“循环”通过每个单元格,直到它找到匹配?因为它只是在一个地方看,然后从它找到匹配的任何行中提取信息,我相信这应该是可能的。

任何人都可以帮我解决这个问题吗?

感谢您提供的任何帮助。如前所述,如果我可以避免使用VBA,那就太棒了,但如果你们中的任何一个人知道如何在一个函数中完成类似的东西,我会非常感激。

提前致谢!

此致

加里

1 个答案:

答案 0 :(得分:6)

  

这太可怕了!

Hideous是轻描淡写的:p

您的公式可以简单地写成

=IF(ISERROR(E3/VLOOKUP(A3,MoldInformation!A:F,6,0)),"",E3/VLOOKUP(A3,MoldInformation!A:F,6,0))

这样做会在MoldInformation中找到来自Col F的值,其中A中的值(来自MoldInformation)与A3匹配

<强>截图

enter image description here