循环计算行并将行计数粘贴到特定单元格

时间:2015-01-09 15:04:40

标签: excel-vba vba excel

我有一组具有动态列数的数据,每列下都有一个动态值列表。

我想浏览每一列并计算项目数减去两个标题字段,并将其计为特定位置的值。

所以我有两行标题,然后是一行空白行,然后是数据。

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

我知道问题出在循环部分,但我不知道如何以数字格式调用行。

1 个答案:

答案 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

Screenshot