![](/img/trans.png)
[英]How do I split dates in the form of “Dec. 9, 2016” into three separate columns “12” “09” “2016” in Excel?
[英]Excel 2016 - Split String of Random Text and Numbers to Separate Columns?
這是一個有趣的,我還沒有找到答案。
我有一個從Python抓取器導出的CSV文件,該文件抓取了MLB每日得分結果。 我唯一遇到的問題是輸出會在單元格A1中創建一個類似於今天的字符串:
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....
請注意,當游戲進入額外局時,它將局數包裹在方括號中。 我還將在此行之后的后續行中列出這些每日得分數據,因此最好遍歷整個工作表。
有什么想法嗎? 非常感謝!
您可以為此使用正則表達式。
並替換以下2種模式:
(\\[az\\]|\\[0-9\\]|\\))(\\[AZ\\])
https://regex101.com/r/b9rdEH/1 ([az])([0-9])
https://regex101.com/r/rYtU1Z/1 因此,以下應該適用於您的字符串。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.