Vba 在文本末尾添加字符&;增量字母A至B

Vba 在文本末尾添加字符&;增量字母A至B,vba,excel,loops,increment,Vba,Excel,Loops,Increment,我需要的帮助是将前面的单元格文本复制到它下面的单元格中,并在其末尾添加字母A,即VP0007之前VP0007A之后。这应该继续下去,直到所有空白单元格都被递增,并到达下一个 VP008 请看图片。如果我不太清楚,我道歉              之前:                        之后:        现在我有以下代码: ActiveCell.Offset(1, 0).Select Letter = "A" Letters = Chr(Asc(Letter)

我需要的帮助是将前面的单元格文本复制到它下面的单元格中,并在其末尾添加字母
A
,即
VP0007
之前
VP0007A
之后。这应该继续下去,直到所有空白单元格都被递增,并到达下一个<代码> VP008 请看图片。如果我不太清楚,我道歉

             之前:                        之后:
      

现在我有以下代码:

ActiveCell.Offset(1, 0).Select
Letter = "A" 
Letters = Chr(Asc(Letter) + 1) 
Number = ActiveCell.Offset(-1, 0).Value 
If ActiveCell.Value = Number & Letter _ Then 
    ActiveCell.Offset(1, 0).Select.Value Number & Number 
Else 
    ActiveCell.Value = Number & Letters 
End If 
Loop Until ActiveCell.Offset(1, 0).Value <> ""
ActiveCell.Offset(1,0)。选择
字母=“A”
字母=Chr(Asc(字母)+1)
Number=ActiveCell.Offset(-1,0).Value
如果ActiveCell.Value=数字和字母uu
ActiveCell.Offset(1,0).选择.Value编号和编号
其他的
ActiveCell.Value=数字和字母
如果结束
循环直到ActiveCell.Offset(1,0)。值“”

尝试使用以下代码

LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
Letter = "A"
For iLoop = 2 To LastRow
    If ActiveSheet.Range("A" & iLoop) = "" Then
        iValue = ActiveSheet.Range("A" & iLoop - 1)
        iiLoop = iLoop
        Do
            If ActiveSheet.Range("A" & iiLoop) = "" Then
                ActiveSheet.Range("A" & iiLoop) = iValue & Letter
                Letter = Chr(Asc(Letter) + 1)
            Else
                Letter = "A"
                Exit Do
            End If
            iiLoop = iiLoop + 1
        Loop
        iLoop = iiLoop - 1
    End If
Next

试试这个简短的子过程

Sub fillSubseries()
    Dim i As Long, a As Long, str As String

    With Worksheets("sheet4")
        For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
            If IsEmpty(.Cells(i, "A")) Then
                .Cells(i, "A") = str & Chr(a)
                a = a + 1
            Else
                a = 65
                str = .Cells(i, "A").Value2
            End If
        Next i
    End With
End Sub
备选方案:

Sub tgr()

    Dim ws As Worksheet
    Dim aData As Variant
    Dim sTemp As String
    Dim sLetter As String
    Dim i As Long, j As Long

    Set ws = ActiveWorkbook.ActiveSheet
    With ws.Range("A2", ws.Cells(ws.Rows.Count, "A").End(xlUp))
        If .Row < 2 Then Exit Sub   'No data
        aData = .Value
    End With

    For i = LBound(aData, 1) To UBound(aData, 1)
        If Len(Trim(aData(i, 1))) > 0 Then
            sTemp = Trim(aData(i, 1))
            j = 0
        Else
            j = j + 1
            sLetter = Replace(ws.Cells(1, j).Address(0, 0), 1, vbNullString)
            aData(i, 1) = sTemp & sLetter
        End If
    Next i

    ws.Range("A2").Resize(UBound(aData, 1)).Value = aData

End Sub
Sub-tgr()
将ws设置为工作表
Dim aData作为变体
作为字符串的Dim sTemp
像细绳一样暗淡
我和我一样长,我和我一样长
设置ws=ActiveWorkbook.ActiveSheet
使用ws.Range(“A2”,ws.Cells(ws.Rows.Count,“A”).End(xlUp))
如果.Row<2,则退出Sub“无数据”
aData=.Value
以
对于i=LBound(aData,1)到UBound(aData,1)
如果Len(Trim(aData(i,1)))>0,那么
sTemp=修剪(aData(i,1))
j=0
其他的
j=j+1
sLetter=Replace(ws.Cells(1,j).Address(0,0),1,vbNullString)
数据(i,1)=sTemp和SLETER
如果结束
接下来我
ws.Range(“A2”).Resize(UBound(aData,1)).Value=aData
端接头

此代码应处理超过26个空行且增量超过字母“Z”的情况


如果您需要纯配方溶液,您可以尝试以下步骤(数据的第一行应该是A2,而不是A1):

首先,我们需要一个虚拟列来填充空白行。在B2上使用以下公式,并将其向下复制到A列的最后一行:

=IF(A2<>"",A2,B1)
=IF(A2“”、A2、B1)
  • 然后我们将在C列上创建最终值。将以下公式添加到C2并向下复制:

    =IF(A2<>"",A2,IF(ISNUMBER(VALUE(RIGHT(C1,1)))=TRUE,C1&"A",B2&CHAR(CODE(RIGHT(C1,1))+1)))
    
    =IF(A2“”、A2、IF(ISNUMBER(VALUE(RIGHT(C1,1)))=TRUE、C1和“A”、B2和CHAR(code(RIGHT(C1,1))+1)))
    
  • 基本上,我们首先在列B上填充具有重复值的空白行,然后复制COL:如果COL:A不是空的,则值为Col:C。如果Col:A为空,且上行(Col:C)值的最后一个字符为数字,则我们会将“A”添加到该值。如果最后一个字符是一个字母,那么我们将下一个字母与Col:B值连接起来

    当一切正常时,您应该有如下内容:


    到目前为止,您做了什么?您到底在哪里遇到问题?我复制了错误的图像。如果您查看我重新上传的图像,它应该会显示.ActiveCell.Offset(1,0)。选择Letter=“a”Letters=Chr(Asc(Letter)+1)Number=ActiveCell.Offset(-1,0)。Value如果ActiveCell.Value=Number&Letter,则选择ActiveCell.Offset(1,0).Select.Value Number&Number Else ActiveCell.Value=Number&Letters结束循环直到ActiveCell.Offset(1,0)。Value“”请将有关问题的任何新信息(如该代码)放入问题本身。我们鼓励您添加更多信息。还要确保代码格式正确。(高亮显示并单击工具栏上的
    {}
    按钮。)此外,您可以在编写注释后编辑注释长达5分钟。对不起,Ashlee,我是新手。Jeeped您的代码在我为变量签名后给了我符号和mmehta。它不喜欢这一行{iValue=ActiveSheet.Range(“A”&iLoop-1)}但是谢谢你的帮助。在我对你的代码做了一些尝试之后,你的代码是有效的。当字母一直递增到Z时,如何用AB开始下一个单元格(下一个空白单元格),而不是符号?你能给点建议吗?很高兴知道。请把它标为正确答案。谢谢你的vba代码工作得很好。非常感谢你和所有帮助过我的人。
    =IF(A2<>"",A2,IF(ISNUMBER(VALUE(RIGHT(C1,1)))=TRUE,C1&"A",B2&CHAR(CODE(RIGHT(C1,1))+1)))