参数不是可选的,还有其他两个相关的问题

时间:2016-01-12 11:24:36

标签: excel vba

道歉,如果我应该创建一个新线程。我不知道该怎么做。

我是新手,我得到了这个“不可选的参数”错误,我无法摆脱它。

基本上,我试图想出一种在excel表中粘贴函数的方法,单击一个按钮并在最小值和最大值之间标准化该函数(在这种情况下为[0,1])。

到目前为止,我有这个:

Sub Normalisation()

Dim FirstR As Integer, FirstC As Integer, r As Integer, c As Integer

FirstR = activecell.Row
FirstC = activecell.Column

Set max = Cells(27, 2)
Set min = Cells(28, 2)


'Normalisation
For c = 0 To Selection.Columns.Count
    For r = 0 To Selection.Rows.Count
        If Len(Cells(FirstR + r, FirstC + c)) <> 0 Then
            Cells(FirstR + r, FirstC + c + 1).Value = _
            0 + ((Cells(FirstR + r, FirstC + c) - min) * (1 - 0)) / (max - min)
        End If
    Next r
Next c

End Sub

我在“Set max = Cells(27,2)”这一行中得到了错误,我认为最低限度也是如此。

你能帮助我吗?

另一点是:我可以避免从excel电子表格中的单元格中获取我的数据的最大值和最小值,即,我可以让程序完全执行吗?现在我可以从excel电子表格中获取我的数据的最大值和最小值,因为我无法弄清楚如何从Sub中计算它(我真的认为它会更容易......)

最后一点是:如果我能得到一个弹出窗口,它会询问用户他/她希望函数在哪个极值之间进行标准化(从我的代码中的公式到目前为止把它保留为[0,1])。

就像一张纸条,我一直在寻找这些问题的答案一周。我并没有把它们放在一起让你们为我做这些工作......他们是真正的问题。

非常感谢!

1 个答案:

答案 0 :(得分:0)

不确定为什么你会在该行上收到错误。 以下是从Sheet1列A获取MAX和MIN值的两种方法:

Sub Test()

    MsgBox Application.WorksheetFunction.Max(Sheet1.Columns(1))
    'or
    MsgBox WorksheetFunction.Max(ThisWorkbook.Worksheets("Sheet1").Range("A:A"))

End Sub

要求这两个值的最佳方法是使用几个文本框构建一个用户表单 - 然后可以在一次点击中询问这两个值。
只使用代码就可以使用下面的代码 - 我确信有更好的方法:

Sub Test()

    Dim sMaxValue As String
    Dim lMaxValue As Long

    Do
        sMaxValue = InputBox("Select Maximum value.", , Default:="Enter numeric value")
    Loop While Not IsNumeric(sMaxValue)

    lMaxValue = CLng(sMaxValue)

End Sub