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)
=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)))
到目前为止,您做了什么?您到底在哪里遇到问题?我复制了错误的图像。如果您查看我重新上传的图像,它应该会显示.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)))