我正在接收外部供应商的邮件列表。我们将使用Excel 2010.有一个唯一的帐号列。
我需要一个宏来确定何时添加新行而不是现有行被修改,然后如何获取最大值(帐号)并添加1来保持新帐号的唯一性。
答案 0 :(得分:0)
您可以跟踪对工作表所做的更改。如果在“帐号”列中没有任何内容的行上发现更改的单元格为非空白,则会计算并填写新帐号:
将此代码放在工作表的VBA模块中:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim record As Range
Dim maxAccountNo As Long
For Each record In Target.Rows
If Cells(record.row, 1) = "" And WorksheetFunction.CountA(record.EntireRow) > 0 Then
If Not maxAccountNo Then
maxAccountNo = 1 + WorksheetFunction.Max(Range("$A:$A"))
End If
Cells(record.row, 1) = maxAccountNo
End If
Next
End Sub
这也包括您复制/粘贴没有填写帐号的多行的情况。
请注意,此代码假定帐号位于A列,不包括第一行。如有必要,请在代码中调整此引用:
$A2:$A100000
..以及列号:
Cells(record.row, 1)