-6

我在单元格中有这样的格式:

S: 7
P: 
M: 1
L:1
K: 1
Q: 7

我想提取每个数字并将其写在另一列中,例如 forS: 7 我想在 coumn BC 中写 7,对于 P:0,在 BD 中写 0 和...(数字和 : 之间的空格是灵活的)我怎么能用vba做到这一点?

更新:

Dim objRegex As Object
Dim objRegMC As Object
Dim objRegM As Object
Dim lngCnt As Long

usedRowCount = Worksheets("Übersicht_2013").UsedRange.Rows.Count
For i = 1 To usedRowCount
cellAYvalue = Worksheets("Übersicht_2013").Cells(i, "AY").Value
cellAYvalue = Replace(cellAYvalue, " ", "")

Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "[A-Z]:\s?(\d?)"
.Global = True
If .test(cellAYvalue) Then
Set objRegMC = .Execute(cellAYvalue)
For Each objRegM In objRegMC
'[bc1].Offset(0, lngCnt) = objRegM.submatches(0)
Worksheets("Übersicht_2013").Cells(i, "BC") = objRegM.submatches(0)
lngCnt = lngCnt + 1
Next
End If
End With
Next i

谢谢

4

1 回答 1

2

我会使用而不是屠宰长字符串测试

此代码需要一个字符串

S:7 P:M:1L:1K:1Q:7

并将 7 放入BC1BD1留空,1 放入BE1

将它指向一个单元格 - 比如说A1- 你可以使用 StrIn = Range("A1")

代码

Sub RecUt()
Dim StrIn As String
Dim objRegex As Object
Dim objRegMC As Object
Dim objRegM As Object
Dim lngCnt As Long

StrIn = "S: 7 P: M: 1L:1K: 1Q: 7"
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "[A-Z]:\s?(\d?)"
.Global = True
If .TEST(StrIn) Then
Set objRegMC = .Execute(StrIn)
For Each objRegM In objRegMC
[bc1].Offset(0, lngCnt) = objRegM.submatches(0)
lngCnt = lngCnt + 1
Next
End If
End With
End Sub
于 2013-07-02T10:50:57.757 回答