我正在为我的雇主制作自定义 Excel 电子表格。
我想出了一个非常讨厌的函数,它可以完成我想要的功能,但我很想简化它。
我熟悉 C
、C#
和 Java
。如果可能的话,我想避免使用 VBA
,但如果这是我唯一的选择,我可能会考虑使用它。
我正在为一家制造工厂制定计划表,该工厂处理订单并从库存中扣除 Material 等。我为该工厂生产的所有产品设置了一个页面。每种产品使用不同的 Material 。我目前有一个令人讨厌的 if 语句,它检查两个表之间的匹配字符串,然后在找到匹配项时用相关信息填充其他一些单元格。
我目前有一个包含 20 个条件的 if 语句!我绝不会在真正的程序中做这样的事情!
无论如何,我基本上可以循环遍历一系列单元格,直到找到匹配项,然后从那里开始?这是我正在尝试做的一个示例:
选项卡:MoldInformation - 包含工厂生产的产品的所有必要信息。 选项卡:订单 - 包含客户已下的所有订单。
在“订单”选项卡中,第一个单元格的标题为“模具”,用户可以在其中输入一个字符串,然后在“订单”选项卡中,会显示与生产订单所需的 Material 数量有关的信息。如果输入某个模具,则与该模具对应的 Material 将填充订单表中各自的选项卡。
我的所有计算都很好,但我的 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(A3=MoldInformation!A$18,E3/MoldInformation!F$18, IF(A3=MoldInformation!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,那就太好了,但如果你们中有人知道我如何在函数中完成类似的事情,我将不胜感激。
提前致谢!
真诚的,
加里
最佳答案
That is hideous!
丑陋是轻描淡写的:p
你的公式可以简单地写成
=IF(ISERROR(E3/VLOOKUP(A3,模具信息!A:F,6,0)),"",E3/VLOOKUP(A3,模具信息!A:F,6,0))
它的作用是,它将在 MoldInformation
中查找 F 列的值,其中 A 中的值(来自 MoldInformation
)与 A3
屏幕截图
关于function - Excel IF 语句中的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664629/