我正在尝试制作一个 Excel 工作表,人们可以在其中轻松更改多个列中的公式。查看者将具有不同程度的 Excel 经验。
目标
- 用户可以调整列的计算方式
- 用户可以调整列的计算方式无需直接编辑列中的每个单元格或了解 Excel 语法
- 当需要时,用户可以使用 Excel 语法轻松地编辑单元格(不需要解析多级 IF 语句)。
可能的方法
- 所有可能的公式都位于每一列单元格中,并带有 IF 语句。最简单的方法是将 IF 语句放在引用选项单元格的公式中(例如,输入 1 计算总和,输入 2 计算乘积)。然而,一旦有多个这样的参数,每个单元格中的公式就会变得非常复杂,新的查看者很难编辑。
- 与上文类似,但使用以下方法将公式放在单独的单元格中评价。例如,如果选择选项 1,则计算单元格引用 A1 中的公式;如果选择选项 2,则计算单元格引用 A2 中的公式。在此选项中,公式可轻松编辑。然而,EVALUATE 在当前版本的 Excel for Mac 中不可用,并且有些用户会在 Mac 上进行操作。
例子
在下表中,c = a + b
C is sum? 1
C is product? 0
a b c
1 2 3
4 5 9
2 2 4
5 3 8
6 1 7
我希望用户能够轻松地将列更改c
为c = a * b
C is sum? 0
C is product? 1
a b c
1 2 2
4 5 20
2 2 4
5 3 15
6 1 6
我不懂 VBA,但欢迎用 VBA 回答。
答案1
您可以使用以下内容(很高兴找到一个有价值的,而不是强制的,用于SWITCH()
,最后):
=SWITCH($E$1,"Sum",A2+B2,"Product",A2*B2)
您将听取他们对在单元格 E1 中执行的操作的意见。真正让它发挥作用的是 E1 的数据验证规则。我使用了带有选项的列表Sum,Product
。必须记住里面选项周围的双引号SWITCH()
。
另一种方法可以使用LET()
:
=LET(Sum,A2+B2,Product,A2*B2,IF($E$1="Sum",Sum,Product))
当然,还有EVALUATE()
使用各种方法来获取公式部分的方法。一种方法是使用VLOOKUP()
返回完整公式的EVALUATE()
。如果需要更复杂的公式,可以将其与大型结构相结合,并使用上述任何一种方法来处理其中的细节,例如范围。您通常清楚地知道EVALUATE()
以及如何使用它,因此它只需要进行单元格端工作,创建查找表并确定要将上述想法用于哪些较小的元素。