繁体   English   中英

如何使用 VBA 在多列的文本末尾自动添加单词?

[英]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 BColumn 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM