您的方法存在的问题是,A1将始终更改为反映COUNT,您不能使用WAS值。还有什么要进入列A中的其余单元格,您不能像@JMax所示那样使用相邻行中的计数?
如果你必须增加固定计数,我会建议你想一个简单的宏,你想要的任何一个细胞的变化事件。例如,每次输入“FOO”或“BAR”或任何其他数据时,它会对B:B中的范围进行COUNTIF,并将输入它的结果连接在相邻的C中。根本没有理由依赖于A1,可能会改变。
这个例子可能会让你开始。 Countif可以使用';'为您的Excel版本 它假定您正在进行数据输入,然后移动到下一个单元格。它还会检查您是否已在C中的相邻单元格中输入条目,以便在重新访问单元格时不会更改计数。
这意味着它将在该相邻单元格中出现错误,除非在进行更改之前先删除C中的值。当然,如果你有4个FOO,然后删除一个,你仍然有FOO_4,它不会改变,所以如果你将第4个FOO改为BAR,先删除FOO_4。如果增量HAS与其他原因的实际计数相匹配,我不会依赖于此。
Sub doIncrement()
If ActiveCell.Column = 2 And ActiveCell.Offset(-1, 1) = "" Then
ActiveCell.Offset(-1, 1) = ActiveCell.Offset(-1, 0) & "_" & WorksheetFunction.CountIf(Range("B:B"), (ActiveCell.Offset(-1, 0)))
Else: Exit Sub 'or do something else
End If
End Sub
然后在
Private Sub Worksheet_Change(ByVal Target As Range)
Call doIncrement
End Sub
调用此嗯......选择,'Copy' - '粘贴(值)'? – GSerg
寻找一个自动化的解决方案,这样当添加新行时,不需要复制/粘贴就可以自动完成 – sdolgy