Excel 执行vba代码后出现的垃圾号
我有下面的代码,它从一个范围(这里是D3到D30)复制数字(没有颜色),然后从第1行开始粘贴到F列中,并进行一些百分位数计算 问题是,我注意到第一行的F列中出现了一个杂散的数字“5”,即使在我的D3-D30范围内没有这样的数字Excel 执行vba代码后出现的垃圾号,excel,vba,Excel,Vba,我有下面的代码,它从一个范围(这里是D3到D30)复制数字(没有颜色),然后从第1行开始粘贴到F列中,并进行一些百分位数计算 问题是,我注意到第一行的F列中出现了一个杂散的数字“5”,即使在我的D3-D30范围内没有这样的数字 Sub TPNoRedpass50tablet() Dim cel As Range Dim Rng As Range Dim arr As Variant Dim i As Long Application.Sc
Sub TPNoRedpass50tablet()
Dim cel As Range
Dim Rng As Range
Dim arr As Variant
Dim i As Long
Application.ScreenUpdating = False
For Each cel In Sheets("TP").Range("TP!$D$3:$D$30")
If cel.Font.Color = 0 Then
If Rng Is Nothing Then
Set Rng = cel
Else
Set Rng = Union(cel, Rng)
End If
End If
Next cel
ReDim arr(Rng.count - 1)
If Not Rng Is Nothing Then
For Each cel In Rng
arr(i) = cel
i = i + 1
Next cel
Sheets("TP").Range("F1").Resize(UBound(arr) + 1).Value = Application.Transpose(arr)
Set Rng = Sheets("TP").Range("F1:I" & Sheets("TP").Cells(Rows.count, "F").End(xlUp).Row)
Sheets("WBR").Range("AH101").Formula = "=PERCENTILE.INC(" & Rng.Address(, , , True) & ",50%)*24"
Sheets("WBR").Range("AH101").Value = Sheets("WBR").Range("AH101").Value
End If
Application.ScreenUpdating = True
End Sub
试试这个:
Sub TPNoRedpass50tablet()
Dim cel As Range
Dim Rng As Range
Dim arr As Variant
Dim i As Long
Application.ScreenUpdating = False
For Each cel In Sheets("TP").Range("TP!$D$3:$D$30")
If Rng Is Nothing Then
Set Rng = cel
If cel.Font.Color = 0 Then
Else
Set Rng = Union(cel, Rng)
End If
End If
Next cel
ReDim arr(Rng.count - 1)
If Not Rng Is Nothing Then
For Each cel In Rng
arr(i) = cel
i = i + 1
Next cel
Sheets("TP").Range("F1").Resize(UBound(arr) + 1).Value = Application.Transpose(arr)
Set Rng = Sheets("TP").Range("F1:I" & Sheets("TP").Cells(Rows.count, "F").End(xlUp).Row)
Sheets("WBR").Range("AH101").Formula = "=PERCENTILE.INC(" & Rng.Address(, , , True) & ",50%)*24"
Sheets("WBR").Range("AH101").Value = Sheets("WBR").Range("AH101").Value
End If
Application.ScreenUpdating = True
End Sub
问题似乎出现在每个循环的第一个循环中。您有一个并集,它仅在未设置Rng时第一次执行。您将乘以24作为百分位数。因此,你的范围内有0.21吗?没有。不管范围是什么,我得到了“F”中第一行的数字“5”。我不确定这是一个结转还是我代码中的一个错误范围内的值是多少(“TP!$D$3)?F中的第一行从那里转置。它是6 2 3 4 5 6 8 9(6,2,3,4是彩色数字)…所以在F中,我得到5(垃圾),然后是5 6 8 9