Excel 使用索引/匹配选择以字符串形式编写的公式,并启用它?

Excel 使用索引/匹配选择以字符串形式编写的公式,并启用它?,excel,vba,indexing,match,evaluate,Excel,Vba,Indexing,Match,Evaluate,我有一个价格表,目前有5种不同的产品类别。每种产品必须有两种不同的价格。根据产品和价格类型,计算方法会有所不同。因此,我使用INDEX/MATCH从我创建的表中找到了所需的公式 下面是一个屏幕转储,我想附加Excel文件,但似乎无法解决如何添加。 问题:我如何“运行”我获取的公式-我尝试了不同的使用评估的建议,但它似乎没有减少它?此外,我还尝试了整个公式的“间接”,但没有成功 我希望避免在这种情况下出现任何VBA 有人能提供一些见解吗?你可以,但如果我理解正确,公式中唯一改变的是“mulipl

我有一个价格表,目前有5种不同的产品类别。每种产品必须有两种不同的价格。根据产品和价格类型,计算方法会有所不同。因此,我使用INDEX/MATCH从我创建的表中找到了所需的公式

下面是一个屏幕转储,我想附加Excel文件,但似乎无法解决如何添加。

问题:我如何“运行”我获取的公式-我尝试了不同的使用评估的建议,但它似乎没有减少它?此外,我还尝试了整个公式的“间接”,但没有成功

我希望避免在这种情况下出现任何VBA

有人能提供一些见解吗?

你可以,但如果我理解正确,公式中唯一改变的是“muliplier”数,那么最好是查找该数,而不是整个公式。另一种方法(使用
评估
等)不被视为“良好做法”,原因有很多


编辑: 我没有看到第二个变化值(因为我使用的是SO mobile应用程序),但这仍然不是一个问题,因为它会成为一个目标列。你可能会想到相反的想法:有时基于多个条件的查找会变得复杂,但这是一个更多数据的问题,而不是为查找添加条件

VLookup
可能是最简单的方法,就像G2可能是:

=VLOOKUP(E2, $J$4:$L$8, 2, False)
…返回范围
J4:L8
的第二列,其中第一列等于
E2
(然后对于下一个所需列,使用相同的公式,除了3而不是2。)

由于我不确定某一天可以添加更多的列,因此我允许这样做,而不是指定“Column 2或Column 3”等,而是按名称动态查找列。(因此,如果将G1中的标题更改为目标数据图表中存在的其他列的名称,G2中使用的乘数/系数将发生变化。)

为了整洁以及像G&H这样的附加列的潜力,我将查找表移到了一个单独的表中。它可以不碍事,因为您不需要经常查看或更改它。(如果同一图表将被多个工作簿引用,您甚至可以将其移动到单独的工作簿中,并将所有公式指向该工作簿,因为最好是在不同的工作簿中有相同数据的一个副本,而不是多个副本

此外,为了帮助将来进行潜在的更改(只是为了更整洁),我没有参考目标表范围地址(如“J4:L8”等),而是命名了两个范围:

  • 乘数/系数数据表可通过其地址或通过
    myMultipliers

  • 同一表格的标题也称为
    myMultiplierTitles
    (用于与原始表格上G&H列的标题匹配)

公式 在这些更改之后,G2中的查找公式为:

=INDIRECT(VLOOKUP($E2,myMultipliers,MATCH(G$1,myMultiplierTitles,0),FALSE)&ROW())*VLOOKUP($E2,myMultipliers,MATCH(G$1,myMultiplierTitles,0)+1,FALSE)
INDIRECT
返回按名称(文本/字符串)而不是直接(作为范围)引用的单元格的值。例如:

=INDIRECT("A1")
返回与相同的值

=A1
…但是使用
INDIRECT
我们可以从其他地方(单元格、函数或公式)获取名称。因此,如果x=“A1”,那么=INDIRECT(x)返回的结果与上述两个示例相同

您最初的计划是将整个公式存储在一个表中作为文本,这在
间接
和/或
评估
的帮助下是可行的,但我认为这种方法被认为是更好的做法,部分原因是它有利于将来的扩展

该公式比原来的要长,但这主要是因为它正在动态读取字段名。而大小并不重要。:-)


问题在于,不仅是乘数,还有将要乘以的数字所在的列。您可以看到,这表示为B和C(在最后一页中,可能还有更多)这就是为什么我不认为查找就足够了……好吧,现在我看不到我手机上的这个网站了。:-)2个值不是问题。我现在将添加到我的答案中来说明原因。确认我理解的问题:例如,任何类别为
BTB+KO
的内容都需要获得
间接(“C”,ROW())的值*2
间接(“B”,ROW())*2.5)
,正确?已发送邮件-您可以删除评论!谢谢!正确!-我需要能够更改这些因素/列号。