VBA获取当前工作表的最后一行和最后一列
时间: 2023-06-10 11:06:08 浏览: 232
获取当前工作表的最后一行可以使用以下代码:
```
Dim lastRow As Long
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
```
这个代码将在第一列从下往上扫描,找到第一个非空单元格所在的行数,即为最后一行。
获取当前工作表的最后一列可以使用以下代码:
```
Dim lastCol As Long
lastCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
```
这个代码将在第一行从右往左扫描,找到第一个非空单元格所在的列数,即为最后一列。
相关问题
vba如何获取最后一列列号
在VBA中,可以使用以下代码获取最后一列的列号:
```
lastColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
```
这行代码中,`ActiveSheet.Cells(1, Columns.Count)`用于获取当前工作表中最后一行的最后一列单元格。而`End(xlToLeft)`则表示从该单元格开始向左寻找,直到找到第一个非空单元格。最后使用`.Column`获取该单元格所在的列号。
写一个VBA按列区分,逐行相除得到的和写到最后一行
这是一个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
```
这个宏可以将当前活动工作表中的数据逐列进行计算,并将每行的结果除以当前列的总和,最后将每行的结果累加到最后一行的第一个单元格中。请注意,此代码仅适用于数字数据,如果数据中包含非数字,则需要相应地进行修改。