vba - 用不同的字符替换第一次和第二次出现的情况

标签 vba excel excel-formula

我有一个可以批量替换的 vba 代码。

我想(通过 VBA 或公式)将每个单元格的第一次出现的“%”替换为“(”,第二次出现的“%”替换为“)”。

我的数据在 B 列中。

这是我的 VBA 代码:

Sub Multi_FindReplace()

Dim sht As Worksheet
Dim fndList As Variant
Dim rplcList As Variant
Dim x As Long

fndList = Array("_", "VOSTFR.mp4", "VF.mp4")
rplcList = Array(" ", "VOSTFR", "VF")

'Loop through each item in Array lists
  For x = LBound(fndList) To UBound(fndList)
    'Loop through each worksheet in ActiveWorkbook
      For Each sht In ActiveWorkbook.Worksheets
        sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _
          LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
          SearchFormat:=False, ReplaceFormat:=False
      Next sht

  Next x

End Sub

谢谢! :)

最佳答案

单元格 C1 中输入以下任一公式:

=SUBSTITUTE(SUBSTITUTE(B1,"%","(",1),"%",")",1)

=REPLACE(REPLACE(B1,FIND("%",B1),1,"("),FIND("%",REPLACE(B1,FIND("%",B1),1,"(")),1,")")

根据需要拖动/复制。请参阅图片以供引用。

enter image description here

如果少于两个%,公式将抛出错误。因此,为了避免错误,请在公式中使用 IFERROR

=IFERROR(REPLACE(REPLACE(B1,FIND("%",B1),1,"("),FIND("%",REPLACE(B1,FIND("%",B1),1,"(")),1,")"),"")

关于vba - 用不同的字符替换第一次和第二次出现的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44326537/

相关文章:

excel - 堆栈空间不足 - 如何优化 VBA 代码

excel - 从 HttpPostedFileBase 对象读取 Excel 文件数据

excel - 计算空白单元格直到找到值

excel - VBA将工作表保存为特定路径中的工作簿

xml - VBA按属性选择XML节点

excel - 有没有办法将 Excel 文件嵌入到我的可执行 (exe) 文件中?

excel - 验证下拉条件

除非源工作簿打开,否则 Excel 链接不起作用?

vba - 如果找到,如何快速搜索然后更新/删除行

excel - ComboBox.MatchEntry 属性如何具有 `fmMatchEntryComplete` 值但能够覆盖自动完成功能?