因此,我有一个如下所述的组合列表,需要将其与字母和数字分开。
我希望使用MS Excel将其拆分如下;文本到列分隔功能或任何其他有效功能-
我尝试使用固定宽度,如果字母字符后有2个或更多位数的数字值,则该宽度将不起作用。有一种方法可以执行此操作,因为我必须对13000个组合重复此操作?
答案 0 :(得分:3)
由于Text是常量,因此请创建常量的标题行,并将您的值从A1开头,将此公式放入B2并上下复制:
=MID($A2,FIND(B$1,$A2),IF(ISNUMBER(--MID($A2,FIND(B$1,$A2)+2,1)),3,2))
答案 1 :(得分:1)
在找到模式的地方插入定界符,然后将修改后的字符串分成新的列。
Option Explicit
Sub makeSplit()
Dim i As Long, j As Long, str As String, arr As Variant
'set the worksheet
With Worksheets("sheet5")
'step throughj the cells in column A
For i = .Cells(.Rows.Count, "A").End(xlUp).Row To 2 Step -1
'put the cell value into a variable
str = .Cells(i, "A").Value2
'step through the characters in the sting backwards
For j = Len(str) - 1 To 3 Step -1
'is the current character alphabetic and the previous character a digit?
If Not IsNumeric(Mid(str, j, 1)) And IsNumeric(Mid(str, j - 1, 1)) Then
'insert a space
str = Left(str, j - 1) & Space(1) & Mid(str, j)
End If
Next j
'split the string using the space as delimiter
.Cells(i, "A").Resize(1, UBound(Split(str, Space(1))) + 1) = Split(str, Space(1))
Next i
End With
End Sub
答案 2 :(得分:1)
我找到了一种方法,但是会占用大量资源。
首先,在工作表中将所有字符串放在一列中,并确保该列具有自由的列。
然后在第一行添加一个新的空行,并在字母R,C,P,D,O,S中输入字母,因为您说的是它们始终按该顺序排列。这些是公式所需的识别字母。
现在在每个字母下方,每个字符串的右边,在公式中输入
=C$1&MAX(IFERROR(VALUE(MID($A2,SEARCH(C$1,$A2)+1,2)),0),VALUE(MID($A2,SEARCH(C$1,$A2)+1,1)),0)
仅当数字不再是2位数字时才有效,因为3位数字将是
=C$1&MAX(IFERROR(VALUE(MID($A2,SEARCH(C$1,$A2)+1,3)),0),IFERROR(VALUE(MID($A2,SEARCH(C$1,$A2)+1,2)),0),VALUE(MID($A2,SEARCH(C$1,$A2)+1,1)),0)
对于四个,继续添加一个IFERROR(),使)),2))),3)像上面那样增加。
所有公式都经过求值后,如果要摆脱公式,可以将其复制并粘贴为值。
示例表(荷兰语Excel):