道歉,如果我应该创建一个新线程。我不知道该怎么做。
我是新手,我得到了这个“不可选的参数”错误,我无法摆脱它。
基本上,我试图想出一种在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])。
就像一张纸条,我一直在寻找这些问题的答案一周。我并没有把它们放在一起让你们为我做这些工作......他们是真正的问题。
非常感谢!
答案 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