发布网友 发布时间:2022-04-24 15:05
共2个回答
热心网友 时间:2023-10-18 00:07
Q我吧,用宏代码即VBA编程
QQ:394901158
是想实现这个功能吗,你只要在1、2、3、4列中输入相关数据,H列就会自动生成编号,注:如果1、2、4列中没有输过的类别,系统会提示你输入该类别的编码,如:之前没有输过“固定资产”,则系统会提示你输入编号,你可以在提示框中输入“GD”,以后再输入固定资产时就不会再提示了,其他几个分类别也是一样,只要第一次输入就可以了。我的表格比你的多一个标识列,这个列不可以删除,你可以把它隐藏起来。 以下是代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Worksheet, c As Range, co As Integer, ro As Integer, intcount As Integer
If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then Exit Sub
Set r = Sheets("库")
co = Target.Column
ro = Target.Row
If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 4 Then
Set c = r.Range("A1:A" & r.UsedRange.Rows.Count).Find(what:=Target)
If c Is Nothing Then
loop1:
strtemp = InputBox("数据库没有该分类,请输入该分类的编码!!", "分类编码")
ro = r.Range("A65536").End(xlUp).Row + 1
If strtemp = "" Then GoTo loop1
r.Cells(ro, 1) = Target
r.Cells(ro, 2) = strtemp
End If
With Target
If Cells(.Row, 1) <> "" And Cells(.Row, 2) <> "" And Cells(.Row, 4) <> "" Then
strtemp = findstr(Cells(.Row, 1)) & "-" & findstr(Cells(.Row, 2)) & "-" & findstr(Cells(.Row, 4))
Cells(.Row, 16) = strtemp
With ActiveSheet.Range("P2:P" & ActiveSheet.UsedRange.Rows.Count)
Set c = .Find(what:=strtemp, LookIn:=xlValues)
intcount = 0
If Not c Is Nothing Then
firstrow = c.Row
Else
intcount = 1
GoTo loop2
End If
Do
intcount = intcount + 1
Set c = .FindNext(c)
ro = c.Row
Loop Until Not c Is Nothing And c.Row = firstrow
loop2:
Cells(Target.Row, 8) = strtemp & "-" & Format(Cells(Target.Row, 3), "yyyymmdd") & "-" & Format(intcount, "000")
End With
End If
End With
End If
End Sub
Function findstr(strtemp As String) As String
Dim r As Worksheet, c As Range
Set r = Sheets("库")
Set c = r.Range("A1:A" & r.UsedRange.Rows.Count).Find(what:=strtemp)
If Not c Is Nothing Then
findstr = r.Cells(c.Row, c.Column + 1)
End If
End Function
热心网友 时间:2023-10-18 00:07
Lustre Chan:
我想说一下次数自动递增的解决方法,其他的要求应该很简单,
1. 在同一个工作簿中,新建一个工作表sheet2;
2. 在这个新的工作表中,输入公式,如在A1单元格中输入
=left(sheet1!H2,18), 依次复制公式到A2,A3,A4....
(假设你的数据在Sheet1中)
3. 在Sheet1, 单元格H2中,在完成了前面GD-DQ-ZH-20100712-的公式后,接着输入公式:
&right("000"&&count("GD-DQ-ZH-20100712-"),3),
注意这里的("GD-DQ-ZH-20100712-")是你编写的公式,而非这样的文本。