我在找一個excel 2007的正則表達式,它可以替換所有-3的實例,只在字符串的末尾用絕對沒有的東西(刪除它)來替換它。在整個字符串中有-3個實例,但是我只需要在最後刪除那些字符串。這被集成到一個宏中,所以使用一個正則表達式進行查找和替換是首選。excel正則表達式行尾
0
A
回答
1
您可以通過使用VBA的Instr
功能做到這一點沒有Regex
。下面是代碼:
Sub ReplaceIt()
Dim myRng As Range
myRange = Range("A1") ' change as needed
If InStr(Len(myRange.Text) - 2, myRange.Text, "-3") > 0 Then
myRange.Value = Left(myRange, Len(myRange) - 2)
End If
End Sub
更新
基於以下樹裏的評論,改變If語句這也將工作,這是一個有點清潔。
If Right (MyRange, 2) = "-3" Then MyRange=Left(MyRange, Len(MyRange)-2)
1
請嘗試以下操作: -
編輯按OP的評論:
Sub mymacro()
Dim myString as String
//'--do stuff
//'-- you could just do this or save the returning
//'-- string to another string for further processing :)
MsgBox replaceAllNeg3s(myString)
End Sub
Function replaceAllNeg3s(ByRef urstring As String) As String
Dim regex As Object
Dim strtxt As String
strtxt = urstring
Set regex = CreateObject("VBScript.RegExp")
With regex
//'-- replace all -3s at the end of the String
.Pattern = "[(-3)]+$"
.Global = True
If .test(strtxt) Then
//'-- ContainsAMatch = Left(strText,Len(strText)-2)
//'-- infact you can use replace
replaceAllNeg3s = Trim(.Replace(strText,""))
Else
replaceAllNeg3s = strText
End If
End With
End Function
//'-- tested for
//'-- e.g. thistr25ing is -3-3-3-3
//'-- e.g. 25this-3stringis25someting-3-3
//'-- e.g. this-3-3-3stringis25something-5
//'-- e.g. -3this-3-3-3stringis25something-3
1
除非它是更大宏的一部分,否則這裏不需要VBA!只需使用這個公式,你會得到結果:
=IF(RIGHT(A1,2)="-3",LEFT(A1,LEN(A1)-2),A1)
(假設你的文字是細胞A1
)
相關問題
- 1. 正則表達式:行尾
- 2. Python正則表達式到行尾
- 3. 正則表達式來匹配行尾
- 4. 正則表達式到行尾
- 5. 正則表達式Excel Excel VBA
- 6. 正則表達式添加尾隨零
- 7. 的Javascript正則表達式結尾字
- 8. 正則表達式截斷尾隨零
- 9. JavaScript的正則表達式尾隨零
- 10. javascript正則表達式(字的結尾)
- 11. 正則表達式字符串結尾
- 12. 正則表達式(正則表達式)
- 13. 正則表達式(正則表達式)
- 14. 正則表達式(正則表達式)
- 15. 正則表達式匹配Excel公式
- 16. 刪除整行的正則表達式包括行尾
- 17. Emacs正則表達式匹配行尾,後跟新行
- 18. .NET正則表達式多行幫助 - 正則表達式
- 19. 多行正則表達式
- 20. 2行正則表達式
- 21. 正則表達式,多行
- 22. 正則表達式從行
- 23. 正則表達式就行
- 24. 多行正則表達式
- 25. 正則表達式多行
- 26. java正則表達式行
- 27. 多行正則表達式
- 28. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 29. Excel的正則表達式的宏
- 30. Excel的VBA正則表達式
快速瀏覽一下 - 一些字符串可能有-3以外的其他地方,這是否仍然有效?一旦我在這裏進入辦公室,我會試試這個! – NRGdallas
@斯科特我首先想到了這個例程。但根據OP的描述,他可以在字符串的任何位置使用「-3」的倍數。 :)在你的情況下,OP可能需要遍歷你的方法,直到所有最後的'-3'消失。例如'-3thisstring-3 has many-3-3-3-3' – bonCodigo
@NRGdallas - 是的,這隻會消除字符串末尾的'-3'。但@bonCodigo指出,如果最後有多個「-3」,它只會刪除第一個。不知道這是否會成爲問題。我主要提供此解決方案作爲其「全功能」VBA解決方案,無需引用其他對象。 –