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方法无效“,请问如何解决? 展开
想要实现的功能:根据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方法无效“,请问如何解决? 展开
4个回答
展开全部
因为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
你这样处理就没有问题了
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 · 知道合伙人软件行家
关注
展开全部
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
从后面往前面写更合适。
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
从后面往前面写更合适。
追问
您的也不错,给出一个新的思维方式!非常感谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接用公式哪
=IF(B1<>"",(COUNTA($B$1:B1)),"")
=IF(B1<>"",(COUNTA($B$1:B1)),"")
追问
谢谢您的公式!只是要求是既定的,公式当然也能实现,只是可能只能是更需要另外的方式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询