使用对数在vba中对表进行规范化

时间:2015-05-22 12:49:20

标签: excel vba excel-vba

我正在尝试编写一个vba代码,该代码将使用对数我的整个表进行规范化。值从另一个软件导入,因此如果该值小于0.1,则将其写入单元格"< 0.1"。我希望程序将这些单元格格式化为" number"并将它们除以2,然后将所有值与基数10对数,并将它们写入新的表格中。这是我到目前为止所提出的:

Sub normalizacija()
Dim Rng As Range
Dim ws As Worksheet
Set Rng = Application.InputBox(Prompt:="Unesite granice normalizacije", Title:="Granice", Default:=ActiveCell.Address, Type:=8)
On Error GoTo 0
If Rng Is Nothing Then
Else
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set ws = Sheets.Add
i = 0
For r = 1 To Rng.Rows.Count - 1
    For c = 1 To Rng.Columns.Count - 1
    Cells(r, c).Activate
    If Cells(r, c).NumberFormat <> "0" Then
        Cells(r, c).NumberFormat = "0"
        Cells(r, c).Value = Cells(r, c).Value / 2
    End If
    Cells(r, c).Value = Log(Cells(r, c).Value)
    Next c
Next r
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End If
End Sub

Debbuger说这很好,直到我尝试将细胞值除以2,然后我就不知道其余代码是否正常工作。

感谢您的帮助! 马林

1 个答案:

答案 0 :(得分:0)

在您Set ws = Sheets.Add处于工作表后。所以Cells(r, c)的所有代码都引用了空的新工作表。您必须在Sheets.Add.

之后重新激活原始工作表
相关问题