在EXCEL中,利用VBA实现根据一列数据自动成另一列数据(用按扭一次实现,有相应条件)

在EXCEL中,根据工作表第一列数据的行数(不包括第一行,因为第一行是标题,不能动),从第二行开始自动生成第二列对应行数的固定数据或文本,也同时从第二行开始自动生成第三列对应行数的流水号,如00001.......00003.....
Private Sub Worksheet_Change(ByVal my As Range)
On Error Resume Next
If my.Column = 1 Then
i = 0
For Each my In Range([a2], [a65536].End(xlUp))
i = i + 1
If my <> "" And my(1, 46) <> Range("at1") Then my(1, 46) = 21
If my <> "" And my(1, 47) <> Range("au1") Then my(1, 47) = 0
If my <> "" And my(1, 48) <> Range("av1") Then my(1, 48) = 0
If my <> "" And my(1, 52) <> Range("az1") Then my(1, 52) = Format(Right(i, 11), "00000000000")
If my <> "" And my(1, 51) <> Range("ay1") Then my(1, 51) = Format(Right(i + 2, 11), "00000000000")
If my <> "" And my(1, 53) <> Range("ba1") Then my(1, 53) = "系统管理员"
If my <> "" And my(1, 54) <> Range("bb1") Then my(1, 54) = 1
If my <> "" And my(1, 55) <> Range("bc1") Then my(1, 55) = 1
If my <> "" And my(1, 56) <> Range("bd1") Then my(1, 56) = 0
If my <> "" And my(1, 57) <> Range("be1") Then my(1, 57) = 1
Next
End If
End Sub

我已经可以实现了,就是上面的代码,能否帮我把上面的代码用一个按扭实现

第1个回答  2011-10-16
在第三列中输入:
=B2 & ROW(A1)
然后往下拉就行了追问

用VBA实现,用按扭实现一次生成

追答

Dim i, irow As Integer
irow = Sheet1.UsedRange.Rows.Count
for i=2 to irow
cells(i,"c").value=cells(i,"b").value & i
next i
放到按钮的click事件里面,你试试看吧。

追问

和我意思完全不一样,您没明白我的意思

追答

能说的详细点吗

追问

在EXCEL中,根据工作表第一列数据的行数(不包括第一行,因为第一行是标题,不能动),从第二行开始自动生成第二列对应行数的固定数据或文本,也同时从第二行开始自动生成第三列对应行数的流水号,如00001.......00003.....
说明:第一列是一个条件,只有第一列事先有数据(数据已经存在),那么后面的两列对应才会生成,通过点击一个按扭一次达到目的

第2个回答  2011-10-16
B2输入 =if(A2<>"",X,""),X要改为你固定数据或文本
C2输入 =if(A2<>"","0000" & Row(),"")
第3个回答  2011-10-17
有个问题,生成的第二列的内容是什么?和第一列完全相同的还是怎么样?你必须得举个具体的例子才能帮你解决。追问

不相同,是我需要的固定的数字或文本(我可以人为修改)

追答

那第二列总要有一点规律的吧?或者是第二列全部都一样的文本或者数字,或者是个序列什么的,任意的文本或数字没法做的。

追问

第二列的数据整列都一样,是一个固定的数据字或文本,我在我的问题补充上加了我编的代码,只是不方便,执行时每次都要点击一下第一列的数据才可以,我希望用一个按扭实现,能否帮个忙

追答

要生成按钮很简单,调出控件工具箱(查看-工具栏-控件工具箱),点击那个按钮图标,在工作表任意位置拉一个按钮出来,右键点击这个按钮,选择“查看代码”,把你的代码(除去第一和最后一句),复制过去即可。

追问

谢谢

本回答被提问者采纳