Excel中如何自动转换编码?

发布网友 发布时间: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-")是你编写的公式,而非这样的文本。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com