Excel宏来规范化数据

时间:2017-10-11 19:49:53

标签: excel vba excel-vba normalize

我目前正在尝试为Excel创建一个宏,其中包含特定值(基本上是数字)的列将以标准化方式显示在新列中(最高数字= 1,最低数字= 0)。

通常,我会使用公式:

=(J2-MIN($J$2:$J$XXX))/(MAX($J$2:$J$XXX)-MIN($J$2:$J$XXX))

但是,由于列的长度是动态的,并且对于每组值都会更改,因此我无法为XXX输入值。

现在,我发现了如何获得动态范围(例如:numRows = Range(Selection, Selection.End(xlDown)).Rows.Count),但我没有设法合并这两个函数。

我在这个网站上找到了一个关于数据规范化的线程,但我认为这是一个不同的故事,这里的这个应该更简单。

我将不胜感激任何帮助!当我刚刚开始使用宏(2小时前)时,我也很感激,如果这将是简单的语言。

编辑: 首先,感谢您的快速回复!

我天真地尝试使用此代码:

Sub Normalize_TEST()
'
' Normalize_TEST Makro
'

'
    Range("A1").Select
    numRows = Range(Selection, Selection.End(xlDown)).Rows.Count
    Range("K2").Select
    ActiveCell.FormulaR1C1 = "=(("J2")-MIN($J$2:$J$numRows$))/((MAX($J$2:$J$numRows$)-MIN($J$2:$J$numRows$))
    Range("K2").Select
    Selection.AutoFill Destination:=Range(Cells(2, 11), Cells(numRows, 11))
End Sub

但它不起作用,我收到一条错误消息("编译错误")。

1 个答案:

答案 0 :(得分:0)

我现在才意识到你是对的,我甚至不需要VBA。您的=(J2-MIN($ J:$ J))/(MAX($ J:$ J)-MIN($ J:$ J))行正常工作。我不知道用$ j:$ J它意识到不包括空单元格。 我现在只使用此代码用于单元格K2,然后为其余部分执行VBA自动填充功能。 我认为这可以关闭。

感谢@tigeravatar的超级快速帮助!