Excel 如何使用VBA将单词自动添加到多列文本的末尾?
我需要在两列中每个条目的末尾添加一个.mp3。我有下面的代码,但我必须选择列中的每个项目,并将其应用于这些单元格 但是我希望有一个代码可以自动将.mp3添加到B列和D列中任何条目的末尾 这是我目前的代码:Excel 如何使用VBA将单词自动添加到多列文本的末尾?,excel,vba,Excel,Vba,我需要在两列中每个条目的末尾添加一个.mp3。我有下面的代码,但我必须选择列中的每个项目,并将其应用于这些单元格 但是我希望有一个代码可以自动将.mp3添加到B列和D列中任何条目的末尾 这是我目前的代码: Sub AppendToExistingOnRight() Dim c as range For each c in Selection If c.value <> "" Then c.value = c.value & ".mp3” Ne
Sub AppendToExistingOnRight()
Dim c as range
For each c in Selection
If c.value <> "" Then c.value = c.value & ".mp3”
Next
End Sub
Sub-AppendToExistingOnRight()
调光范围
对于选择中的每个c
如果c.value为“”,则c.value=c.value&“.mp3”
下一个
端接头
如果您能提供帮助,我们将不胜感激。我已经添加了对工作簿、工作表和设置范围的引用,这些引用随后被循环。我还添加了一个检查,以验证单元格末尾是否已经存在“.mp3”。最后,我阻止了屏幕更新,直到脚本完成 如果您希望它运行得更快,请指定范围(即
ws.range(“B1:B1000”)
将检查1000个单元格,而不是1048576)
Sub-AppendToExistingOnRight()
Application.ScreenUpdating=False
将wb设置为工作簿:设置wb=ThisWorkbook
将ws设置为工作表:设置ws=wb.ActiveSheet
调光范围
变暗colB作为范围:设置colB=ws.Range(“B:B”)
变暗冷作为范围:设置冷=ws.范围(“D:D”)
对于colB中的每个c
如果c.Value“”和Right(c.Value,4)“.mp3”,则c.Value=c.Value&.mp3
下一个
对于冷态下的每个c
如果c.Value为“”,则c.Value=c.Value&“.mp3”
下一个
Application.ScreenUpdating=True
端接头
尝试下面的子部分。如果列B
和列D
中的数据相同,则可以使用一个循环
Sub AddMP3()
Dim bRng As Range, dRng As Range, mRng As Range
Set bRng = Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row)
Set dRng = Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row)
For Each mRng In bRng
mRng = mRng & ".mp3"
Next
For Each mRng In dRng
mRng = mRng & ".mp3"
Next
Set bRng = Nothing
Set dRng = Nothing
End Sub
没有循环的解决方案。我正在为列
B
显示它。请随意为列D
调整它
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
Dim sAddr As String
Dim lRow As Long
'~~> Change sheet name as applicable
Set ws = Sheet1
With ws
'~~> Find last row in Col B
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
'~~> Construct your range
Set rng = Range("B1:B" & lRow)
sAddr = rng.Address
'~~> Append ".mp3" to the entire range in 1 go
rng = Evaluate("index(concatenate(" & sAddr & ","".mp3""),)")
End With
End Sub
在行动中
如果您想了解这是如何工作的,那么您可能想看看
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
Dim sAddr As String
Dim lRow As Long
'~~> Change sheet name as applicable
Set ws = Sheet1
With ws
'~~> Find last row in Col B
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
'~~> Construct your range
Set rng = Range("B1:B" & lRow)
sAddr = rng.Address
'~~> Append ".mp3" to the entire range in 1 go
rng = Evaluate("index(concatenate(" & sAddr & ","".mp3""),)")
End With
End Sub