VBA通过列中的值循环并根据值更改下一列

我有一段代码,它取得单元格中的值,并根据值设置不同的单元格。 这是一个简单的代码,我只是不知道如何循环遍历整个列。 有人能指导我如何做到这一点吗? 提前致谢!

这里是我有的代码:

Dim pH As Single, Program As String pH = Range("D2").Value If pH <= 7.8 Then Program = "Neutral" Else Program = "Alkaline" Range("E2").Value = Program 

如果你想在VBA中这样做,你可以创build一个“Do Until”循环直到列中没有更多的值:

 Sub Looper() Dim i as Integer Dim Sel as String Dim MoveDown as String Dim pH as Single Dim Program as String i = 2 MoveDown = "YES" Do Until MoveDown = "DONE" Sel = "D" + Replace(Str(i), " ", "") ph = Range(Sel).Value If pH <= 7.8 Then Program = "Neutral" Else Program = "Alkaline" End If Sel = "E" + Replace(Str(i), " ", "") Range(Sel).Value = Program i = i + 1 Sel = "D" + Replace(Str(i), " ", "") If Range(Sel).Value = "" Then MoveDown = "DONE" End If Loop End Sub 

你还不需要VBA

在E2 '= IIF(D2<=7.8;"Neutral";"Alkaline")'设定公式

你可以把它复制到E栏以下

这可能是使用VBA的最佳解决scheme:

 Sub mysub() Set Wksht = ThisWorkbook.Sheets("Sheet1") 'the Worksheet name you want to fetch data from Wksht.Select Set myRange = Wksht.Range("D2", Range("D65536").End(xlUp)) For Each myCell In myRange.Cells If myCell > 7.8 Then myCell(1, 2) = "Natural" Else myCell(1, 2) = "Alkaline" End If Next myCell End Sub 

Blockquote: myCell(1,2)指向当前行,E列将使用来自当前单元地址的相对地址….所以如果当前单元地址是D2 .. myCell(1,2)是等价的如智慧myCell(1,3)意味着F2,[myCell(row,column)]。