簡體   English   中英

VBA-在For循環中打印

[英]VBA- Printing in For loop

我正在嘗試從多列數據中查找和刪除異常值,但是在運行代碼時,它並沒有清除包含異常值的單元格。 我嘗試只在第一個For循環中打印“ colLength”,但也沒有執行任何操作。 關於我哪里出了問題或如何解決的建議?

Sub Outliers()

Dim calc As Worksheet
Set calc = ThisWorkbook.Sheets("Sheet2")

Dim num As Double
Dim x As Integer
Dim y As Integer
Dim colLength As Integer

'Variables for upper fence, lower fence, first quartile, third quartile, and interquartile range
Dim upper As Double
Dim lower As Double
Dim q1 As Double
Dim q3 As Double
Dim interquartRange As Double

For y = 1 To y = 49

'Find last row of the column
colLength = calc.Cells(Rows.count, y).End(xlUp).Row

'Calculate first and third quartiles
q1 = Application.WorksheetFunction.Quartile(Range(Cells(2, y), Cells(colLength, y)), 1)
q3 = Application.WorksheetFunction.Quartile(Range(Cells(2, y), Cells(colLength, y)), 3)

interquartRange = q3 - q1

'Calculate upper and lower fences
upper = q3 + (1.5 * interquartRange)
lower = q1 - (1.5 * interquartRange)

For x = 2 To x = colLength
    num = calc.Cells(x, y)

    'Remove outliers
    If num > upper Or num < lower Then
        Range(calc.Cells(x, y)).ClearContents
    End If
Next x

Next y

End Sub

For y = 1 To y = 49應該是For y = 1 To 49 同樣, For x = 2 To x = colLength應該是For x = 2 To colLength

在一個新的模塊中嘗試一下,您將看到並理解其中的區別;)

Dim Y As Long

Sub SampleA()
    For Y = 1 To Y = 49
        Debug.Print Y
    Next Y
End Sub

Sub SampleB()
    For Y = 1 To 49
        Debug.Print Y
    Next Y
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM