2015-05-14 36 views
2

我有以下代码,它适用于列中的第一个值,但我需要修改代码,以便它将if语句应用于列中的所有值。现在它将结果作为40列的K列中的所有值,但我需要代码运行,以便它首先评估K2,然后K3,然后K4等请帮助!如何将宏应用于所有行?

Sub UPTRange() 



Dim UPT As Range, cell As Range, result As Range 
Set UPT = Range("K2:K2642") 
Set result = Range("L2:L2642") 

For Each cell In UPT 

If cell.Value >= 40 Then 
result = "40 +" 
ElseIf cell.Value = (30 <= 39) Then 
result = "30 - 39" 
ElseIf cell.Value = (20 <= 29) Then 
result = "20 - 29" 
ElseIf cell.Value = (10 <= 19) Then 
result = "10 - 19" 
ElseIf cell.Value = (2 <= 9) Then 
result = "2 - 9" 
ElseIf cell.Value = (0 <= 1) Then 
result = "0 - 1" 
Else: cell.Value = "Error" 
End If 

Next 

For Each cell In result 

Range("L2").Value = result 
Next 


End Sub 

回答

3
If cell.Value = (30 <= 39) Then 

相同

If cell.Value = True Then 

因为你正在评估表达30 <= 39,这给True ...

如果你想检查的范围,那么你应该使用类似

If cell.Value > 30 And cell.Value <= 39 Then 

一旦你有了result值则只是这样做:

cell.offset(0, 1).Value = result 

result一个细胞地方的cell

编辑

Sub UPTRange() 

    Dim UPT As Range, cell As Range, result, v 

    Set UPT = ActiveSheet.Range("K2:K2642") 

    For Each cell In UPT 

    v=cell.value 

    If v >= 40 Then 
     result = "40 +" 
    ElseIf v > 30 And v <= 39) Then 
     result = "30 - 39" 
    ElseIf 
     'etc etc 
    Else 
     result = "Error" 
    End If 

    cell.Offset(0, 1).Value = result 

    Next 

End Sub 
+0

嗨。感谢您的反馈,但我不认为这确实解决了问题。我能够得到一个结果到我需要的单元格中,但公式看起来并没有循环遍历k列中的所有单元格。你知道一个办法吗? – Gabi

+0

看我上面的编辑 –

0

也许这正确的?

If cell.Value >= 40 Then 
    cell.Formula = "40 +" 
ElseIf cell.Value >= 10 And cell.Value < 40 Then 
    cell.Formula = (Int(cell.Value/10) * 10) & " - " & (Int(cell.Value/10) * 10) + 9 
ElseIf cell.Value > 1 And cell.Value < 10 Then 
    cell.Formula = "2 - 9" 
Else 
    cell.Formula = "Error" 
End If 
相关问题