EXCEL VBA 自动填充序号的问题

问题描述:1、2行为标题行,A列为序号,B列为数据。想要实现的功能:根据B列内容,A列自动填充序号。没有数据不填写序号,有数据按实际情况填写编号。代码如下:……Dimro... 问题描述:1、2行为标题行,A列为序号,B列为数据。

想要实现的功能:根据B列内容,A列自动填充序号。没有数据不填写序号,有数据按实际情况填写编号。
代码如下: …… Dim row As Integer row = ActiveSheet.UsedRange.Rows.Count
Range("A3").Value = "1"
Range("A4").Value = "2"
Range("A3:A4").AutoFill Destination:=Range("A3:A" & row)
……
代码在数据为空、仅有1行、仅有2行的情况下会出现:“类Range 的AutoFill方法无效“,请问如何解决?
展开
 我来答
太极健1969
2013-03-19 · TA获得超过9033个赞
知道大有可为答主
回答量:8668
采纳率:69%
帮助的人:3607万
展开全部
因为autofill方法是向下填充,当你仅有1,2行时,是本身填充本身,所以无效。
sub test ()
dim i%,j%,x%
i=range("B65536").end(xlup).row'取得B列最后一个非空单元格行号
if i<3 then exit sub'当没有数据,只有标题行存在时,退出程序
for x=3 to i
if cells(x,2)<>"" then j=j+1:cells(x,1)=j'判断B列是否为空,不为空时,序号j+1写入对应A单元格
next x
end sub
你这样处理就没有问题了
更多追问追答
追问
非常感谢!我最后用的你的代码
追答
用我的代码,选别的满意,呵呵
表里如一
2013-03-19 · 知道合伙人软件行家
表里如一
知道合伙人软件行家
采纳数:2066 获赞数:11636
从事6年生产管理,期间开发了多款小软件进行数据处理和分析,后

向TA提问 私信TA
展开全部
Sub test()
Dim i
For i = ActiveSheet.Range("B65536").End(xlUp).Row To 3 Step -1
If i >= 3 Then
Range("A" & i).Value = i - 2
End If
Next
End Sub

从后面往前面写更合适。
追问
您的也不错,给出一个新的思维方式!非常感谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我的王是金闪闪4o
推荐于2016-06-15 · TA获得超过6700个赞
知道大有可为答主
回答量:7194
采纳率:42%
帮助的人:3328万
展开全部
sub mysub()
dim i as integer,j as integer
j=0
for i=3 to [b65536].end(xlup).row
if range("b"&i)<>"" then
range("a"&i)=j+1
end if
next i
endsub
追问
实测后发现,编号全部为1,
追答
不好意思。忘了给你写变量增加1的语句。由于在网页上凭空想的,没有去验证。已更新如下:
Sub mysub()
Dim i As Integer, j As Integer
j = 0
For i = 3 To [b65536].End(xlUp).Row
If Range("b" & i) "" Then
Range("a" & i) = j + 1
j = j + 1
End If
Next i
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
popmoon
2013-03-19 · TA获得超过9994个赞
知道大有可为答主
回答量:4464
采纳率:30%
帮助的人:3525万
展开全部
直接用公式哪
=IF(B1<>"",(COUNTA($B$1:B1)),"")
追问
谢谢您的公式!只是要求是既定的,公式当然也能实现,只是可能只能是更需要另外的方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式