首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在excel中创建计数器单元格和静态单元格

在excel中创建计数器单元格和静态单元格
EN

Stack Overflow用户
提问于 2011-08-05 09:54:11
回答 2查看 9.8K关注 0票数 0

问题:

  • I有一个计数器单元格: A1,值为=COUNTIF(B:B;"FOO")
    • ,这给出了B列中所有"FOO“实例的当前”计数“。

如果"FOO“在列B中只存在一次,则

  • I有一个值单元格C1,其公式为:=IF(B1="FOO";"FOO_" & A1;)
    • ,这给出了FOO_1的结果。

问题:

  • 我希望能够在将内容写入C1单元格时引用A1的值。当A1更新时,我不希望修改C1。C2现在应该接受A1的更新(现在是2),C2应该是:FOO_2,例如:

A1 =1 B1 = FOO C1 = FOO_1

A1 =2 B2 = FOO C2 = FOO_2

在向B列添加新行之前,C1仍然是基于A1值的FOO_1

正在寻找一种自动创建ID的方法,比如MySQL中的增量值,而不是寻找涉及到人复制/粘贴..的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-05 13:53:21

您的方法的问题是,A1总是会更改以反映计数,您不能使用以前的值。在A列的其余单元格中,还有什么不能像@JMax建议的那样在相邻行中使用计数?

如果必须使用固定计数进行增量,我建议您在任何单元格的更改事件上考虑一个简单的宏。例如,每次输入"FOO“或"BAR”或任何东西时,它都会执行B:B中范围的COUNTIF,并将结果连接到相邻的C中。

这个例子可能会让你开始。对于您的Excel版本,Countif可能使用“;”,它假定您正在进行数据输入,然后向下移动到下一个单元格。它还检查您是否已经在C中的相邻单元格中输入了条目,因此如果您重新访问一个单元格,它不会更改计数。

这意味着它在相邻的单元格中是错误的,除非您在进行更改之前先删除C中的值。当然,如果您有4个FOO,然后删除一个,您仍然拥有FOO_4,并且它不会更改,所以如果您将第4foo更改为BAR第一个删除FOO_4。如果增量由于其他原因必须与实际计数相匹配,我将不依赖于此。

代码语言:javascript
复制
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

那就把这个叫来

代码语言:javascript
复制
Private Sub Worksheet_Change(ByVal Target As Range)
 Call doIncrement
End Sub
票数 2
EN

Stack Overflow用户

发布于 2011-08-05 11:19:54

如果要坚持使用公式解决方案,可以通过以下方式替换A1公式:

代码语言:javascript
复制
=COUNTIF($B$1:B1;"FOO")

当你拖放你的公式的时候,这就很管用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6954503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档