用VBA,自动获取当前活动sheet,在第四列和第五列之间新插入一列,将该列的第一行命名为“yunxia”,检查第四列的非空行数,从第二行开始,将第三列和第四列非空行相加,得到的和填入到新增列对应的行中
时间: 2024-10-07 16:01:11 浏览: 30
ExcelVBA实例教程060:使用VBA自动生成图表.pdf
5星 · 资源好评率100%
在VBA(Visual Basic for Applications)中,你可以使用以下步骤来完成这个任务:
1. **获取当前活动Sheet**:
使用 `ActiveSheet` 属性可以获取当前工作簿中的活动工作表。
2. **插入新的一列**:
可以使用 `Columns.Cells(column_number, column_letter)` 来指定新的列位置。例如,要在第四列和第五列之间插入,先选择第五列(假设它是Z列),然后右移一列插入新列,可以用 `Insert Shift:=xlToRight`。
3. **设置新列标题**:
选择新插入的列第一行(即第2行),然后用 `Cells(row_number, column_number).Value = "yunxia"` 设置单元格内容。
4. **计算非空行数**:
使用 `SpecialCells(xlCellTypeVisible, xlNonBlanks)` 获取第四列(假设它是D列)的所有非空单元格,再用 `.Count` 得到非空行数。
5. **遍历并计算值**:
遍历从第二行开始的第三列(假设它是C列)和第四列,对于每一行,如果这两个列都不为空,就将它们的值相加,并写入到新插入的列对应的位置。
下面是伪代码形式的大致步骤:
```vba
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet ' 获取当前活动Sheet
' 插入新列
With ws.Columns('Z:Z')
.Insert Shift:=xlToRight
End With
ws.Cells(2, Columns.Count).Value = "yunxia" ' 设置列名
' 计算非空行数
Dim nonEmptyRows As Long
nonEmptyRows = ws.Range("D:D").SpecialCells(xlCellTypeVisible, xlNonBlanks).Count
' 遍历并计算值
Dim i As Long, sum As Double
For i = 2 To ws.Rows.Count
If Not IsEmpty(ws.Cells(i, 3)) And Not IsEmpty(ws.Cells(i, 4)) Then
sum = ws.Cells(i, 3).Value + ws.Cells(i, 4).Value
ws.Cells(i, Columns.Count).Offset(0, -1).Value = sum ' 写入新列
End If
Next i
```
阅读全文