簡體   English   中英

如何在Excel中使用VBA刪除文本字符串中單詞的最后一個字符並插入到另一個單元格?

[英]How to remove the last character of a word in a text string and insert to another cell using VBA in Excel?

除了第 5 個單詞中的那個小逗號外,一切正常。 如何刪除它? 我的代碼如下。

文本如下所示: The data as of 20.12.2019, and so on. 我只想要20.12.2019沒有那個逗號。 有什么線索嗎? 謝謝。

Public Function FindWord(Source As String, Position As Integer)

Dim arr() As String
arr = VBA.Split(Source, " ")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
    FindWord = ""
Else
    FindWord = arr(Position - 1)
End If
End Function

子程序調用函數。

Sub InsertDate()

Sheets("Sheet1").Range("B3").Value = FindWord(Sheets("Sheet2").Range("A2"), 5)

End Sub

所以只是為了好玩,對正則表達式的簡短介紹(這絕不是我的專家):

Sub Test()

Dim str As String: str = "The data as of 20.12.2019, and so on."
Dim regex As Object: Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "\b(\d{2}.\d{2}.\d{4})"
regex.Global = True

Debug.Print regex.Execute(str)(0)

End Sub

如果您的字符串不會一直遵循相同的模式,這將是一個很好的做法。 但是,當它發生時,評論和答案中還提到了其他一些不錯的選擇。

一種選擇是Replace

Sub InsertDate()
    With Sheets("Sheet1").Range("B3")
        .Value = FindWord(Sheets("Sheet2").Range("A2"), 5)
        .Value = Replace(.Value, ",", "")
    End With
End Sub

這仍然是text-that-looks-like-a-date ,因此您可以調用DateValue來轉換它。

.Value = Replace(.Value, ",", "")
.Value = DateValue(.Value) '<~ add this line

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM