我在openclassroom上发现问题时遇到问题。 我们有3个数字,我们在我们的工作表中写入。 然后我们应该用3个不同的函数进行分类,这些函数是最大值,中值和最小值。Excel VBA:Loop逻辑与ElseIf
有关问题的更多信息,请参阅问题的底部。 这里是我的问题代码:
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的函数过程查找最高编号。这里是一个如何使用该函数过程的例子。
maxnum = FindMax(num1,num2,num3)
•使用名为FindMid的Function过程找到中间数字。
•使用名为FindMin的Function过程找到最小的数字。
•将最高的数字输入到单元格C2中,将中间的数字输入单元格C3,并将最小的数字输出到单元格C4中。
例如,假设您输入27到单元格A 2中,14输入到单元格A 3中,并将31输入到单元格A 4中。
当您单击运行按钮时,单元格C2中将显示31 ,单元格C3中将显示27,单元格C4中将显示14。 此问题需要您创建名为problem3的Sub过程,以及名为 FindMax,FindMid和FindMin的三个函数过程。您将在problem3中使用FindMax,FindMid和FindMin。 将所有程序写入一个模块。 **不要使用Excel工作簿环境中的内置最小和最大函数来解决此问题。 **
对此宏使用Option Explicit语句。
提示:在每个Function过程中使用一个If-Then-ElseIf结构。