我遇到了在openclassroom上发现问题的问题。 我们在工作表中写了3个数字。 然后我们应该用3个不同的函数进行分类,其中数字是max,mid和min。
有关问题的详细信息,请参阅问题的底部。 这是我的问题代码:
Sub Problem3()
Dim a, b, c As Double
Dim maxnum, midnum, minnum As Double
a = Range("A2").value
b = Range("A3").value
c = Range("A4").value
Range("C2").value = Findmax(a, b, c)
Range("C3").value = Findmid(a, b, c)
Range("C4").value = Findmin(a, b, c)
End Sub
____
Function Findmax(num1, num2, num3) As Double
If (num1 > num2 And num1 > num3) Then
Findmax = num1
ElseIf (num2 > num1 And num2 > num3) Then
Findmax = num2
ElseIf (num3 > num1 And num3 > num1) Then
Findmax = num3
End If
End Function
___
Function Findmid(x, y, z) As Double
If (y < x < z Or z < x < y) Then
Findmid = x
ElseIf (y < z < x Or x < z < y) Then
Findmid = z
ElseIf (z < y < x Or x < y < z) Then
Findmid = y
End If
End Function
____
Function Findmin(num1, num2, num3) As Double
If (num1 < num2 And num1 < num2) Then
Findmin = num1
ElseIf (num2 < num1 And num2 < num3) Then
Findmin = num2
ElseIf (num3 < num1 And num3 < num2) Then
Findmin = num3
End If
End Function
但是,我为Findmid得到的答案总是错误的(它等于最大数字或最低数字)。
以下是问题的详细信息:
在单元格A2,A3和A4中输入三个数字。 确保所有三个数字都不同。 在Sheet3上创建一个执行名为problem3的宏的运行按钮。该宏完成以下任务:
•从单元格A2,A3和A4中获取三个数字,并将它们存储在变量中。
•使用名为FindMax的Function过程查找最大数字。以下是如何使用该Function过程的示例。
maxnum = FindMax(num1,num2,num3)
•使用名为FindMid的函数过程找到中间数字。
•使用名为FindMin的函数过程找到最小数字。
•将最高数字输出到单元格C2,将中间数字输出到单元格C3,将最小数字输出到单元格C4。
例如,假设您将27输入到单元格A2中,将14输入到单元格A3中,将31输入到单元格A4中。
单击运行按钮时,31 将出现在单元格C2中,27将出现在单元格C3中,而14将出现在单元格C4中。 此问题将要求您创建名为problem3的Sub过程,并命名三个Function过程 FindMax,FindMid和FindMin。您将在problem3中使用FindMax,FindMid和FindMin。 在一个模块中写入所有过程。 **不要使用Excel工作簿环境中的内置Min和Max函数来解决此问题。 **
对此宏使用Option Explicit语句。
提示:在每个Function过程中使用一个If-Then-ElseIf结构。
答案 0 :(得分:2)
您的逻辑陈述(例如x < y < z
)没有按您认为的那样做。
x < y < z
相当于(x < y) < z
所以,如果x&lt; y,变为True < z
。由于True
与-1
相同,因此成为-1 < z
。等等。
重新说明这些陈述,以便
(y < x < z Or z < x < y)
变为
((y < x) And (x < z)) Or ((z < x) And (x < y))
(它们可能会被简化得更多,但这应该让你开始。)
答案 1 :(得分:-1)
我认为它是Max函数,即使我认为它是一个application.Min函数,作为参数,该函数获取三个数字所在的单元格范围。否则使用Switch case,也许得到结果,有三个数字就可以很容易地调试。