写一个VBA按列区分,逐行相除得到的和写到最后一行
时间: 2024-02-05 17:12:16 浏览: 208
这是一个IT类问题。
以下是一个示例代码,可以实现按列区分,逐行相除得到的和写到最后一行的功能:
```
Sub DivideByColumn()
Dim lastRow As Long
Dim numCols As Integer
Dim i As Integer, j As Integer
Dim total As Double
Dim cellValue As Double
'确定最后一行和列数
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
numCols = ActiveSheet.UsedRange.Columns.Count
'逐列进行计算
For i = 1 To numCols
total = 0
'计算当前列的总和
For j = 1 To lastRow
cellValue = Cells(j, i).Value
If IsNumeric(cellValue) Then
total = total + cellValue
End If
Next j
'逐行进行除法运算,并将结果写入当前列的最后一行
For j = 1 To lastRow
cellValue = Cells(j, i).Value
If IsNumeric(cellValue) And total <> 0 Then
Cells(j, i).Value = cellValue / total
End If
'将每行的结果累加到最后一行
If i = numCols Then
Cells(lastRow + 1, 1).Value = Cells(lastRow + 1, 1).Value + Cells(j, i).Value
End If
Next j
Next i
End Sub
```
这个宏可以将当前活动工作表中的数据逐列进行计算,并将每行的结果除以当前列的总和,最后将每行的结果累加到最后一行的第一个单元格中。请注意,此代码仅适用于数字数据,如果数据中包含非数字,则需要相应地进行修改。
阅读全文