对包含下拉列表的多个单元格多次使用相同的公式

时间:2018-08-01 21:31:20

标签: excel vba excel-vba excel-formula

我的文件看起来像这样 image
考虑到我有20种不同的长公式,IF语句将太长。

更新:我后来尝试使用IF语句,但是失败了,因为它依赖替换函数来替换方程式中的单元格引用,但是替换返回的字符串不能被IF用作函数。

用户只需复制并插入上一行就可以增加可用行。

我可以使用索引匹配来根据下拉列表复制包含正确公式的单元格的值,但是当用户再次选择同一项目时,我不能用新值更新公式,而不会影响以前的单元格使用相同的公式。

我找不到一种方法可以多次复制相同的公式并替换其中的单元格引用(没有像搜索和替换这样的人工操作),即使用Substitute函数,替换单元格引用,因为它遍历单元格的值而不是公式(包含主公式的单元格)。

这是我拥有的20个公式之一
=(Tables!O167*144/(Tables!O158*Tables!O159)/4005)^2*INDEX(Tables!A159:L200;MATCH(INDEX(Tables!A159:A200;MATCH(TRUE;INDEX(Tables!A159:A200>=Tables!O158*Tables!O159/(Tables!O160*Tables!O161);0);));Tables!A159:A200;0)+MATCH(INDEX(Tables!B159:B200;MATCH(INDEX(Tables!A159:A200;MATCH(TRUE;INDEX(Tables!A159:A200>=Tables!O158*Tables!O159/(Tables!O160*Tables!O161);0);));Tables!A159:A200;0)+MATCH(INDEX(Tables!B159:B200;MATCH(TRUE;INDEX(Tables!B159:B200>=Tables!O164/(2*Tables!O158*Tables!O159/(Tables!O158+Tables!O159));0);));Tables!B159:B200;0)-1;);Tables!B159:B200;0)-1;MATCH((INDEX(Tables!C158:L158;MATCH(TRUE;INDEX(Tables!C158:L158>=Tables!O163;0);)));Tables!A158:L158;0))

我尝试使用FORMULATEXT将公式转换为字符串,然后使用替代替换单元格引用,然后使用已贬值的评估函数,但达到了255个字符的限制。

我在Google上搜索了很多东西,但都无济于事,我不介意VBA代码,但是使用免费的宏方法会更好,谢谢。

TL; DR:有没有一种方法可以复制存储在单元格中的公式并替换某些单元格引用,然后每次用不同的单元格引用多次将其输入另一个单元格中?

1 个答案:

答案 0 :(得分:1)

在E2中尝试一下并填写。

=CHOOSE(MATCH(LOWER(LEFT(A2)), {"r","s","t"}, 0), B2*C2, B2^2, B2*C2/2)

enter image description here