列中的VBA动态计数

时间:2019-01-07 09:37:16

标签: excel vba

我正在尝试在列中编写用于动态计数的代码。我从上到下使用UserForm插入数据(因此新数据始终位于第二行(第一行用于标题)。

对于A列,每次插入数据时我都希望有一个计数。让我举一个例子:

        Numeration   Columns2   Column3     
Row1         2       Value      Value        
Row2                 Value      Value
Row3                 Value      Value
---------------------------------------------------
Row4         1       Value      Value        
Row5                 Value      Value       

现在,我想要一个短宏,始终将下一个数字插入单元格A2中。它必须是动态的,因为有时我要添加3行数据,有时要添加更多或更少的行。因此,它应该在A列中搜索下一个数字,在其中添加+1并将其粘贴到单元格A2中。

我希望我想做什么。

2 个答案:

答案 0 :(得分:0)

使用WorksheetFunction.Max method在A列中找到最大值,然后添加+ 1

With Worksheets("SheetName")
    .Range("A2").Value = WorksheetFunction.Max(.Columns("A")) + 1
End With

请注意,如果存在以下情况,WorksheetFunction.Max会引发异常:公式在A列中包含错误,因此您可能想使用Error Handling来捕获错误。


替代解决方案(由Zac建议)

  1. 在添加行之前,先选择A2的值
  2. 添加行
  3. 写选择值+ 1

示例:

Dim PickValue As Long
PickValue = Worksheets("SheetName").Range("A2").Value

'add your rows here now

Worksheets("SheetName").Range("A2").Value = PickValue + 1

答案 1 :(得分:0)

如果还添加了“ -----”,则可以使用以下内容。

这是我从A1开始的桌子

=IF(ROW()=1,1,IF(RIGHT(OFFSET(A1,-1,0),1)="-",MAX(OFFSET($B$1,0,0,ROW()-1,1))+1,""))

如果需要,您还可以扩展right检查,使3个字符=“ ---”覆盖所有-ve值。