答案 0 :(得分:1)
本网站上的文字中有许多regex号码解析¹的例子。从叙事文本中提取数字是构建的更简单的正则表达“模式”之一;特别是如此,无论分隔符或分组字符如何,都有固定的数字。
将以下内容放入标准模块代码表中。
=numberParse(A2)
使用A2中的模糊,将以下内容放入B2,
=numberParse(A$2, ROW(1:1))
使用A2中的模糊,将以下内容放入A4并填充,
{{1}}
您的结果应类似于以下内容,
¹以上内容是根据我在Excel UDF for capturing numbers within characters中的回复修改而来的。
²有关详细信息,请参阅How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops。
答案 1 :(得分:1)
假设:
以“压力”命名的工作表
列“A”,其中的单元格可以从
列“B”在
列“C”写下
你可以试试这个
Option Explicit
Sub main()
Dim cell As Range
Dim references As String
Dim referencesArr As Variant
With Worksheets("pressure") '<-- change "pressure" to your actual worksheet name
For Each cell In .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
references = references & GetReferences(cell) & "; "
Next cell
If references <> "" Then
referencesArr = Split(Left(references, Len(references) - 2), ";")
.Range("C1").Resize(UBound(referencesArr)).Value = Application.Transpose(referencesArr)
End If
End With
End Sub
Function GetReferences(rng As Range) As String
Dim arr As Variant, iElem As Long
Dim strng As String
With rng
arr = Split(Replace(Replace(.Value, "[", "|["), "]", "]|"), "|")
For iElem = 1 To UBound(arr) - 1 Step 2
strng = strng & Mid(CStr(arr(iElem)), 2, Len(CStr(arr(iElem))) - 2) & "; "
Next iElem
End With
If strng <> "" Then
GetReferences = Left(strng, Len(strng) - 2)
rng.Offset(, 1) = GetReferences
End If
End Function
答案 2 :(得分:0)
为了快速入门,您可以使用=MID(A1,SEARCH("[",A1)+1,SEARCH("]",A1)-SEARCH("[",A1)-1)
提取括号之间的文本。然后你留下一个用分号分隔的字符串。
然后,您可以运行此子程序(最有可能进行调整,以缩小范围):
Sub splitSemiColons()
Dim myArray() As String
Dim colToUse As Long
colToUse = 3
myArray = Split(Range("B1"), ";")
Dim i As Long
For i = LBound(myArray) To UBound(myArray)
Cells(i + 1, colToUse).Value = myArray(i)
Next i
End Sub
或者,您可以避免使用此宏,只需使用数据 - &gt;文字到列 - &gt;使用;
分隔符,然后复制并粘贴转置。