使用VBA Regex删除模式中的空格



我对VBA非常陌生,我正在处理来自化学仪器的数据,该仪器输出不统一分隔并包含特殊字符的值。我试图将这些值导入excel,并解决了几乎所有的问题,除了一个。当我将这些值导入excel时,它们是逐行读取的。读取的每一行都包含在列a中自己的单元格中。可以有50到大约1000列的数据,上面有相关的标识符和元数据。下面是前5行数据的复制/粘贴。

1 7.724 1190 1231 1292PV 4724391 121434659 49.60% 9.688%
2 9.272 1451 1481 1484 VB 3961552 186833117 76.32% 14.905%
3 10.968 1732 1754 1816 VV 2673526 111034313 45.36% 8.858%
4 15.249 2382 2445 2453 PV 296082 33844178 13.82% 2.700%
5 15.384 2453 2466 2500 VV 219908 14461812 5.91% 1.154%

我遇到的问题是,有时有多个峰值组成一个值,并记录为2个字母一个空格和一到两个数字(0-9),而只有一个峰值的峰值类型只有两个字母。例如,请查看第1行,其中有"PV 4"。我试图使用正则表达式循环通过A列,从第18行开始,并在第1000行结束,找到字母和相关的数字,并删除空格,使单元格看起来像这样:

1 7.724 1190 1231 1292PV4724391 121434659 49.60% 9.688%

一旦它变成这种形式,我可以使用空格分隔符来分隔单元格,而不会对具有多个峰值类型的单元格进行帧移位。

这是我到目前为止写的代码,但我不确定如何继续:

Sub PKTYRegexRemoveSpace()
Dim StrPattern As String: StrPattern = "[A,B,H,M,N,P,S,T,U,V,X,+][A,B,H,M,N,P,S,T,U,V,X,+]s[0-9]{1,2}s"
Dim StrInput As String
Dim MyRange As Range
Dim regEx As New RegExp
Dim Cell As Range

Set MyRange = ActiveSheet.Range("A22:A24")
For Each Cell In MyRange
If StrPattern <> "" Then
StrInput = Cell.Value
With regEx
.Pattern = StrPattern
.Global = False
.IgnoreCase = False
End With

If regEx.Test(StrInput) Then
MsgBox (regEx.Replace(StrInput, *this is where I need help*))
Else
MsgBox ("Not matched")
End If

End If
Next
End Sub

我在开发过程中使用了msgbox,以避免每次失败的替换尝试都必须重新导入文件。

任何帮助都将非常感激!

我建议更改正则表达式模式以使用捕获组和词边界标记

b([A,B,H,M,N,P,S,T,U,V,X,+][A,B,H,M,N,P,S,T,U,V,X,+])s([0-9]{1,2})b
然后,对于替换字符串:
$1$2

最新更新