姓名 | 班级 | 成绩 | 总分 |
小王 | 1 | 12 | |
小李 | 2 | 32 | |
小万 | 3 | 43 | |
小王 | 1 | 12 |
示例:计算班级不为 2 的总分
Sub zongfen()
Dim i As Integer
i = 2
Do While Range("a" & i) <> ""
If Range("B" & i) <> 2 Then
Range("d" & i) = Range("c" & i)
End If
i = i + 1
Loop
End Sub
姓名 | 班级 | 成绩 | 总分 |
小王 | 1 | 12 | 12 |
小李 | 2 | 32 | |
小万 | 3 | 43 | |
小王 | 1 | 12 |
注意:如果 VBA Range("a" & i) <> "" 则代码遇到空行会不运行
正确代码如下:
Sub zongfen()
Dim i As Integer
i = 2
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Do While i <= lastRow
If Range("B" & i) <> 2 Then
Range("d" & i) = Range("c" & i)
End If
i = i + 1
Loop
End Sub
姓名 | 班级 | 成绩 | 总分 |
小王 | 1 | 12 | 12 |
小李 | 2 | 32 | |
小万 | 3 | 43 | 43 |
小王 | 1 | 12 | 12 |
Cells(Rows.Count, 1).End(xlUp).Row
确定指定列的最后一个非空单元格所在的行号
.Rows.Count :确定最大行的数量
.End(xlUp) :找到指定列的最后一个有数据的单元格。该方法将从底部开始搜索,直到找到第一个非空单元格
可设置的参数 | 参数说明 |
xlToLeft | End+左方向键 |
xlToRight | End+右方向键 |
xlUp | End+上方向键 |
xlDown | End+下方向键 |
.Row :属性获取最后一个有数据的单元格所在的行号
Cells(Rows.Count, 1).End(xlUp)
返回一个 Range 对象,该对象表示找到的最后一个非空单元格
Sub test()
MsgBox "最后一列是:" & Cells(Rows.Count, 1).End(xlUp) '小王
End Sub
Cells(1, Columns.Count).End(xlToLeft).Column
在Excel VBA中,可以使用Range对象的End属性来获取最后一列
Sub test()
Dim lastColumn As Long
lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox "最后一列是第 " & lastColumn & " 列"
End Sub