如何从单元格中删除换行符,但将地址格式保留在同一单元格VBA中



我试图从中删除换行符的单元格是这样的:

(Blank line break)
Test Company
1640 Test Avenue,
New York, NY 10035
(000)123-456    
(Blank line break)

我想删除有换行符的两行。我试图使用 find 和替换将换行符替换为 alt 代码 0010,但它创建了一个长字符串。

我想以这个结束:

Test Company
1640 Test Avenue,
New York, NY 10035
(000)123-456  

任何帮助将不胜感激。

像这样的东西

Dim v
v = Trim(cell.Value)
if left(v,1)=vblf then v = right(v, len(v)-1)  'remove leading break
if right(v,1)=vblf then v = left(v, len(v)-1)  'remove trailingbreak
v = replace(v, vbLf & vbLf, vbLf)              'remove blank lines
cell.value=v

下面是一个 UDF,其工作原理类似于工作表 TRIM 函数,但允许您指定要修剪的字符:

Option Explicit
Function trimCHAR(ByVal S As String, char As String)
Dim RE As Object
Dim I As Long
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.MultiLine = True
'need to do separately, otherwise multiple chars within will
'be removed
.Pattern = char & "$"
S = .Replace(S, "") 'Remove extra chars within or at end of string
.Pattern = "^" & char
S = .Replace(S, "") 'Remove extra chars at start of string
End With
trimCHAR = S
End Function

在您的情况下,您可以像这样使用它:

=trimCHAR(cell_ref,CHAR(10))

或者,您可以将其用作循环访问所有要处理的单元格的宏的一部分。

这个想法来自Power Query的Text.Trim函数,该函数仅适用于字符串的开头和结尾,但允许指定任何字符串;以及Ken Puls的改编,它添加了工作表函数TRIM功能,将字符串中的顺序"字符"替换为单个字符。

最新更新