我有一组具有动态列数的数据,每列下都有一个动态值列表。
我想浏览每一列并计算项目数减去两个标题字段,并将其计为特定位置的值。
所以我有两行标题,然后是一行空白行,然后是数据。
Private Sub Worksheet_Activate()
Dim LastCol As Integer
Dim I As Long
Dim RC As Long
With ActiveSheet
LastCol = Cells(2, Columns.Count).End(xlToLeft).Column
End With
For I = 1 To LastCol
RC = Range("I:I" & Rows.Count).End(xlUp).Row
Cells(3, I).Value = RC
Next I
End Sub
我知道问题出在循环部分,但我不知道如何以数字格式调用行。
答案 0 :(得分:1)
这是做什么的: 如果我正确理解了这个问题。这将跳过两个标题行,并计数以查看每列中有多少行包含数据。然后将计数放在每列的第三行。
您遇到了一些问题:
通过使用“。”始终访问属性是一个好习惯。比如,LastCol = .Cells。
您过早结束了With声明。
如果您使用变量迭代列,则应使用.Cells而不是Range,并使用列号而不是字母。
您应该将Long类型变量用于循环和行计数而不是Integer。
您可能希望将此代码放在模块中,然后从工作表activate事件中调用它。这样,如果您需要更新计数,可以从按钮或任何其他时间调用它。
Count应= RC - 3来计算标题行。
在工作表代码中:
Private Sub Worksheet_Activate()
Call CountColumnRows
End Sub
然后在模块中,将其放置:允许您随时从任何来源调用它。
Sub CountColumnRows()
Dim LastCol As Long, I As Long, RC As Long
With ActiveSheet
LastCol = .Cells(2, Columns.count).End(xlToLeft).column
For I = 1 To LastCol
RC = .Cells(Rows.count, I).End(xlUp).row 'I as variable column Number
.Cells(3, I).Value = RC - 3 'Compensate for the headers and Count Row
Next I
End With
End Sub