用VBA,自动获取当前活动sheet,在第四列和第五列之间新插入一列,命名为“yunxia”,检查第四列的非空行数,然后将第三列和第四列非空行相加,得到的和填入到新增列对应的行中
时间: 2024-10-06 11:05:07 浏览: 47
论文研究 - 在相同并行机上具有任意释放时间的作业的有序半在线调度
在VBA中实现这个功能,你可以创建一个新的模块,编写如下的步骤:
```vba
Sub InsertColumnAndSum()
'声明变量
Dim ws As Worksheet
Dim newColIndex As Long
Dim newRowCounter As Long
Dim sum As Double
'获取当前活动工作表
Set ws = ActiveSheet
'插入新列
newColIndex = ws.Cells(ws.Rows.Count, "D").End(xlUp).Column + 1 '找到第四列的最下方单元格,确定新列的位置
ws.Range("E" & 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove '在第四列和第五列之间插入新的列,命名为"yunxia"
'检查第四列非空行数
newRowCounter = WorksheetFunction.CountIf(ws.Columns(4), "<>") 'CountIf 函数计算满足条件的单元格数量
'从第三列和第四列非空行求和
For i = 2 To newRowCounter '从第二行开始,因为第一行通常是标题
If Not IsEmpty(ws.Cells(i, 3)) And Not IsEmpty(ws.Cells(i, 4)) Then
sum = sum + ws.Cells(i, 3).Value + ws.Cells(i, 4).Value '求和操作
ws.Cells(i, newColIndex).Value = sum '将结果写入新列对应行
sum = 0 '清零以便下次迭代
End If
Next i
MsgBox "操作完成。新列 'yunxia' 的数据已填充。", vbInformation, "插入及求和结果"
End Sub
```
此宏会在当前活动的工作表上执行上述操作。完成后,会显示一个消息框通知你操作完成。
记得在运行前,确认当前活动的工作表就是你需要操作的那个,并在需要的地方调整代码以适应实际情况。
阅读全文