gpt4 book ai didi

vba - 如何替换 MS Excel 单元格中单词 "alone"之间的空格

转载 作者:行者123 更新时间:2023-12-02 21:27:34 26 4
gpt4 key购买 nike

我在 Excel 中有一个列(示例单元格如下所示):

               ABCD PQRS;Plate;00;2 XYZ MNO;Bracket;02,1

我希望使用 Excel VBA 将单元格中的单独单词之间的空格替换为下划线,并且不替换任何其他空格,即

            ABCD_PQRS;Plate;00;2 XYZ_MNO;Bracket;02,1

我尝试从各种来源寻找解决方案,但没有成功找到我需要的东西。许多人建议使用

             =SUBSTITUTE and Replace(str, "", "_")

但它们中的任何一个实际上都替换了所有空格,甚至在数字与单词和/或数字与数字之间也是如此。我严格只需要替换单词之间的空格,而不需要任何其他空格。

如果有人能帮助我解决该问题的 Excel VBA 代码,我将不胜感激。

提前致谢!

Sub removeSpaces()  
Dim req As String
Range("$C$1").Activate
Do While ActiveCell.Value <> ""
ActiveSheet.Select
'~~ code here to only choose spaces between words and ignore any other spaces
req = Replace(ActiveCell.Value, " ", "_")
ActiveCell.Value = req
ActiveCell.Offset(1, 0).Activate
Loop

End Sub

最佳答案

您没有定义单词非单词的区别。该定义可以在下面的代码中轻松更改。我选择将 word 定义为以字母开头和结尾的序列。但如果这不起作用,可以用其他定义代替:

编辑更改正则表达式模式和替换代码以解决连续单字符单词的问题。

Option Explicit
Function Underscore(S As String) As String
Dim RE As Object
Const sPat As String = "([A-Za-z])\s+(?=[A-Za-z])"

Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.Pattern = sPat
.ignorecase = True

Underscore = .Replace(S, "$1_")
End With
End Function

鉴于您提供的两个示例:

enter image description here

关于vba - 如何替换 MS Excel 单元格中单词 "alone"之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39825476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com