[英]How do I auto add word to end of text in multiple columns using 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”
Next
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
在行动
如果您想了解这是如何工作的,那么您可能需要查看将整个范围转换为大写而不遍历所有单元格
我已经添加了对工作簿、工作表和设置范围的引用,然后循环。 我还添加了一个检查来验证单元格末尾是否已经存在“.mp3”。 最后,我阻止屏幕更新,直到脚本完成。
如果您希望它运行得更快,请指定范围(即ws.Range("B1:B1000")
将检查 1000 个单元格而不是 1048576)。
Sub AppendToExistingOnRight()
Application.ScreenUpdating = False
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.ActiveSheet
Dim c As Range
Dim colB As Range: Set colB = ws.Range("B:B")
Dim colD As Range: Set colD = ws.Range("D:D")
For Each c In colB
If c.Value <> "" And Right(c.Value, 4) <> ".mp3" Then c.Value = c.Value & ".mp3"
Next
For Each c In colD
If c.Value <> "" Then c.Value = c.Value & ".mp3"
Next
Application.ScreenUpdating = True
End Sub
试试下面的子。 如果Column B
和Column D
Column B
数据相同,则可以使用一个循环。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.