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

我想出了一个非常讨厌的功能,可以执行我想要的功能,但是我想简化一下。

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

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

我目前有一个带20个条件的if语句!我绝对不会在真正的程序中做这种事情!

无论如何,我是否基本上可以遍历一系列单元格直到找到匹配项然后从那里开始?这是我要执行的操作的一个示例:

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

在“订单”选项卡中,第一个单元格名为“模具”,用户将在其中输入字符串,然后在“订单”选项卡中包含与生成订单所需的材料数量有关的信息。如果输入了某个模具,则与该模具对应的材料将填充它们在订单表中的相应选项卡。

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


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


太可怕了!无论如何,我基本上可以让它“循环”通过每个单元格,直到找到匹配项?由于它只查找一个位置,然后从找到匹配项的任何行中提取信息,因此我相信这是可能的。

谁能帮我这个忙吗?

感谢您提供的任何帮助。如前所述,如果我可以避免使用VBA,那就太好了,但是如果你们中的任何一个知道如何在函数中完成类似的工作,我将不胜感激。

提前致谢!

真诚的

加里

最佳答案

太可怕了!


骇人听闻是轻描淡写的: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匹配

屏幕截图

10-07 20:52