Vba Excel 2016-将随机文本和数字字符串拆分为单独的列?
这是一个有趣的问题,我还没有找到答案 我有一个从Python刮板导出的CSV文件,它可以获取MLB每日分数结果。我遇到的唯一问题是,输出在单元格A1中创建了一个类似于以下内容的字符串:Vba Excel 2016-将随机文本和数字字符串拆分为单独的列?,vba,excel,Vba,Excel,这是一个有趣的问题,我还没有找到答案 我有一个从Python刮板导出的CSV文件,它可以获取MLB每日分数结果。我遇到的唯一问题是,输出在单元格A1中创建了一个类似于以下内容的字符串: Washington3FinalPhiladelphia1Washington7Final (10)Philadelphia6Houston5FinalDetroit4LA Dodgers1FinalCincinnati3Oakland3FinalBaltimore2Cleveland2FinalTampa Ba
Washington3FinalPhiladelphia1Washington7Final (10)Philadelphia6Houston5FinalDetroit4LA Dodgers1FinalCincinnati3Oakland3FinalBaltimore2Cleveland2FinalTampa Bay0Toronto2FinalBoston7Miami5FinalNY Mets3Milwaukee0FinalChi Cubs3NY Yankees5FinalMinnesota10Chi White Sox3FinalKansas City6Pittsburgh5FinalSt. Louis11Arizona6FinalColorado3Texas0FinalLA Angels1San Diego2FinalSeattle1Atlanta4FinalSan Francisco1
因此,只看第一点,理想情况下我喜欢的是一个VBA脚本或函数,它将每个数据段分离到各自的列中,这样我就可以从那里更轻松地操作数据。所以我想要一个输出,看起来像:
Washington | 3 | Final | Philadelphia | 1 | Washington | 7 | Final (10) | Philadelphia | 6 | etc....
请注意,当一场比赛进入额外的局数时,它会将局数括在括号中。我还将在下面的后续行中列出这些每日分数数据,因此最好在整个工作表中循环
有什么想法吗?非常感谢 您可以使用正则表达式来实现这一点 并替换以下两种模式:
(\[a-z\]\[0-9\]\])(\[a-z\])
([a-z])([0-9])
Option Explicit
Public Sub SplitTest()
Dim SplitString As String
SplitString = SplitCaps(Range("A1").Value)
Debug.Print SplitString 'show splitstring in intermediate window
'split into array and output into cell
Dim SlitArray() As String
SlitArray = Split(SplitString, "|")
Range("B1").Resize(1, UBound(SlitArray) + 1).Value = SlitArray
End Sub
Public Function SplitCaps(InputString As String) As String
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True
.Pattern = "([a-z]|[0-9]|\))([A-Z])" 'https://regex101.com/r/b9rdEH/1
SplitCaps = .Replace(InputString, "$1|$2")
.Pattern = "([a-z])([0-9])" 'https://regex101.com/r/rYtU1Z/1
SplitCaps = .Replace(SplitCaps, "$1|$2")
End With
End Function
工作得很好。非常感谢!节省了我很多时间