我在N2栏中有一个带有以下文字的单元格。
71sdfsdf 2230400DATE of join 1997-06-03PROGRAMME : ACCES PLUSNew Value 534.55Right value 534.55Clear Value 308.50
我需要在New Value
之后的数字534.55(在这种情况下)保存在O2列中,Right Value
旁边的值在列P2中再次为534.55,如果Clear Value
是然后显示它旁边的值308.50将保存在Q2中。
Clear value
永远不会被包括在内。
我们可以为此写一个宏吗?我已经使用InStr
来获取单元格中存在的值,但我不知道宏中的光标位置如何工作。
答案 0 :(得分:0)
如果您已经在使用InStr功能,那么您所要做的就是将您提取的值放入所需的单元格中:
Public Sub YourMethod()
Dim s As String
s = "71sdfsdf 2230400DATE of join 1997-06-03PROGRAMME : ACCES PLUSNew Value 534.55Right value 534.56Clear Value 308.50"
Const NEW_VALUE = "New Value"
Const RIGHT_VALUE = "Right value"
Const CLEAR_VALUE = "Clear Value"
Dim posNewValue As Integer
posNewValue = InStr(1, s, NEW_VALUE, VbCompareMethod.vbTextCompare)
Dim posRightValue As Integer
posRightValue = InStr(posNewValue, s, RIGHT_VALUE, VbCompareMethod.vbTextCompare)
Dim posClearValue As Integer
posClearValue = InStr(posRightValue, s, CLEAR_VALUE, VbCompareMethod.vbTextCompare)
Dim newValue As String
posNewValue = posNewValue + Len(NEW_VALUE)
newValue = Mid$(s, posNewValue, posRightValue - posNewValue)
Dim rightValue As String
Dim clearValue As String
posRightValue = posRightValue + Len(RIGHT_VALUE)
If posClearValue > 0 Then
rightValue = Mid$(s, posRightValue, posClearValue - posRightValue)
posClearValue = posClearValue + Len(CLEAR_VALUE)
clearValue = Mid$(s, posClearValue)
Else
rightValue = Mid$(s, posRightValue)
End If
Sheets("Sheet1").Range("O2").Value = newValue
Sheets("Sheet1").Range("P2").Value = rightValue
Sheets("Sheet1").Range("Q2").Value = clearValue
End Sub
答案 1 :(得分:0)
如果数字长度不变,您可以使用以下内容:
For i = MyStart To MyLimit 'rows of the range of interest
If InStr(1, "New Value ", Range("N" & i).Value) <> 0 Then _
Range("O" & i).Value = Mid(Range("N" & i).Value, InStr(1, "New Value ", Range("N" & i).Value), 6)
If InStr(1, "Right Value ", Range("N" & i).Value) <> 0 Then _
Range("P" & i).Value = Mid(Range("N" & i).Value, InStr(1, "Right Value ", Range("N" & i).Value), 6)
If InStr(1, "Clear Value ", Range("N" & i).Value) <> 0 Then _
Range("Q" & i).Value = Mid(Range("N" & i).Value, InStr(1, "Clear Value ", Range("N" & i).Value), 6)
Next i
注意空间的存在与否(我认为它们存在)