Sub NewThing()
Dim Cell As Range
For Each Cell In Worksheets("Question 2").Range("B3:B11").Cells
If Cell.Value >= 90000 Then
Range("C3:C11").Value = Cell.Value * 1.5
Else
Range("C3:C11").Value = Cell.Value * 1.1
End If
Next Cell
End Sub
当我进入 vba 编辑器时,我可以看到 C3:C11 中的值循环,我做错了什么?它从 B11 中获取最后一个值并将其用于整个列。请帮忙。
这里的问题是,您在每次迭代中使用单个值设置整个范围
C3:C11
,而不是在循环中设置相应单元格的值。
您应该更新 C 列中的对应单元格,而不是更新整个范围。您可以使用
Offset
方法或显式引用 C 列中的单元格来修复此问题。
Sub NewThing()
Dim Cell As Range
For Each Cell In Worksheets("Question 2").Range("B3:B11").Cells
If Cell.Value >= 90000 Then
' Update the corresponding cell in column C using Offset
Cell.Offset(0, 1).Value = Cell.Value * 1.5
Else
Cell.Offset(0, 1).Value = Cell.Value * 1.1
End If
Next Cell
End Sub