吾爱上有人提问,刚好有空就顺手写了一下,也搬回来以备后期使用。
'作者:yangcongs
'时间:2019.8.22
'版本:V1.0
Sub 宏1()
Dim Ln As String '第一列最后一次出现的非空单元格的行号
Dim str As String '单元格中的字符串
Dim a As Long '字符串长度
Dim str1 As String '字符串中的最后一个字母
Dim str2 As String '字符串中的第一个字母
Dim Fv As String '字符串最后一个字母的编码字符
Dim Sv As String '字符串第一个字母的编码字符
Dim AddV As String '下一个单元格应填入的字母序号
'取第一列最后一次出现的非空单元格的行号
Ln = Cells(Rows.Count, 1).End(xlUp).Row
'取出该单元格中的字符串
str = Range("A" + Ln).Value
'获取该字符串的长度
a = Len(str)
'判断字符串中字母个数
'如果只有一个字母
If a = 1 Then
'把字母转换成编码字符
Fv = Right("000" + AscW(str), 4)
Fv = Fv + 1
'判断该字母的编码字符递增之后是否超出大写字母的界限
If Fv > 90 Then
'如果超出界限,则下一个单元格应填入"AA"
Worksheets("Sheet1").Range("A" & Ln + 1).Value = "AA"
Else
'如果没有超出界限,则把该编码字符转换成字母
AddV = Chr(Fv)
'把该字母填入下一个单元格
Worksheets("Sheet1").Range("A" & Ln + 1).Value = AddV
End If
'如果有两个字母
ElseIf a = 2 Then
'取出最后一个字母
str1 = Right(str, 1)
'取出第一个字母
str2 = Mid(str, 1, 1)
'把最后一个字母转换成编码字符
Fv = Right("000" + AscW(str1), 4)
Fv = Fv + 1
'判断最后一个字母的编码字符递增之后是否超出大写字母的界限
If Fv > 90 Then
'如果超出界限,则最后一个字母递增之后应为"A"
'此时需要把第一个字母递增
'把第一个字母转换成编码字符
Sv = Right("000" + AscW(str2), 4)
Sv = Sv + 1
'判断第一个字母的编码字符递增之后是否超出大写字母的界限
If Sv > 90 Then
'如果超出界限,此时两个字母都是"Z",到达上限
'我给出的处理是弹出提示框,结束程序
MsgBox ("已经到达最大行!")
'退出程序
Exit Sub
Else
'如果没有超出界限,把递增之后的第一个字母的编码字符转换成字母
AddV = Chr(Sv)
'把递增之后的字母填入下一个单元格
Worksheets("Sheet1").Range("A" & Ln + 1).Value = AddV & "A"
End If
Else
'如果没有超出界限,则第一个字母不变,第二个字母递增
'把第二个字母递增之后的编码字符转换成字母
AddV = Chr(Fv)
'把递增之后的字母填入下一个单元格
Worksheets("Sheet1").Range("A" & Ln + 1).Value = str2 & AddV
End If
End If
End Sub