在excel中如何根据其他列内容自动填充序列号

如图,问题1:B列根据C列内容自动填充序列号;问题2:C列自动修正序列号(在序列号填错的情况下);请教各位达人,如何实现?

=IF(C5="","",COUNTA(C$5:C5))
下拉填充公式即可
问题2只能用VBA代码才能实现,其他办法均不可实现。追问

期待详细解答,若解决问题,给您加分。

追答

按【ALT+F11】,在左侧树形结构双击要实现效果的工作表,将下述代码粘贴到右侧编辑区,退出VBA编辑器,即可实现效果:
Private Sub Worksheet_Change(ByVal Target As Range)With Target
If .Count > 1 Or .Row 3 Then Exit Sub
If .Text "" Then .Offset(, -1) = _
"=IF(C" & .Row & "="""","""",COUNTA(C$5:C" & .Row & "))"
If Val(.Value) Val([c5]) + .Offset(, -1) - 1 Then _
.Value = Str(Format(Val([c5]) + .Offset(, -1) - 1, "000000"))
End With
End Sub

追问

粘贴完直接点关闭么?还是需要保存啥的?试了两次,好像没成功,是否我的操作有误?Alt+F11,双击要实现效果的工作表,粘贴代码,直接关闭退出VBA编辑器?

追答

下载上述附件,打开,根据提示,点击“启用宏”,然后就可以用了。

追问

如图,不记得是什么时候设置过什么了,打开工作表的时候会出现这样的提示,点击确定后,再没别的反应了。另外,您怎么设置成输入121自动变成000121的?


问题比较多也比较复杂,耽误您这么多时间,回头给您加100分。

追答

不知道你用的EXCEL什么版本的,如果是03版本的,先打开EXCEL,主菜单——工具——选项——安全,设置宏安全性为“中”,然后退出。再打开文件即可弹出启用宏的提示框。
将123设置显示00123,采用的是设置单元格格式,即鼠标选中要设置的单元格区域,右键——设置单元格格式——数字选项卡——自定义,在右侧编辑栏输入00000即可

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-15
如果你的C列的数据位数都相同,而且都是0开头,并且是从016318开始下去的,那么B5=IF(C5="","",MID(C5,2,5)-16317)追问

C列数据位数相同,但起始数据不定。

追答

期待二楼的回答。

相似回答