我正在尝试创建一种在Excel工作表上进行更改的快速方法,我想知道是否有人能够以有效的方式启发我以解决以下问题。
假设我有三个数字的行,比方说A1:C1(但是,数据不在实际数据集的相邻列中):
5, 10, 15
我希望在该行的末尾有一个下拉框(A4),其中显示了可以在这些数字上使用的函数列表(例如:SUM,AVERAGE,MAX,MIN)以及用于指示A5中的公式。
一种简单的方法是创建一个IF语句和一个可能性的下拉框:例如
= IF($A4 = "average", AVERAGE(A1:A3), IF($A4= "min", MIN(A1:A3), etc..
然而,如果有大量的功能选择,这将是乏味的。所以我想知道是否有一个快速的方法来做到这一点?
也许像
= function(A1:A3)
函数将根据下拉框中的短语进行更改,下拉框取决于工作表上其他位置的函数列表。
答案 0 :(得分:2)
你必须“重新发明轮子”吗?似乎已经为您完成了所有操作,使用Insert>表 - 表:
答案 1 :(得分:1)
有趣的问题。 :)
参见此示例
让我们说你的工作表看起来像这样
<强>代码:强>
将其粘贴到模块中
Function GuessFunction(Rng As Range, FuncType As String) As Variant
Dim wFn As WorksheetFunction
GuessFunction = "Error - Please Check Input"
Set wFn = Application.WorksheetFunction
Select Case UCase(FuncType)
Case "AVERAGE": GuessFunction = wFn.Average(Rng)
Case "SUM": GuessFunction = wFn.Sum(Rng)
Case "MAX": GuessFunction = wFn.Max(Rng)
Case "COUNT": GuessFunction = wFn.Count(Rng)
'
'~~> Add More
'
End Select
End Function
接下来在单元格中输入公式=GuessFunction(A1:H1,I1)
,您就完成了。
<强>输出:强>
<强> ALTERNATIVE 强>
使用EVALUATE
Function GuessFunction(Rng As Range, FuncType As String) As Variant
GuessFunction = "Error - Please Check Input"
GuessFunction = Application.Evaluate("=" & FuncType & "(" & Rng.Address & ")")
End Function
优点:
您不必为每个公式指定单独的代码,就像我们在上面Select Case
中所做的那样。
CONS:
您只能使其适用于SUM/MAX/MIN
类似FORMULA(ADDRESS)
类型的公式。您不能将其用于VLOOKUP