2015-05-20 19 views
0

我有一個名單,我想刪除某些文字如何刪除符號「_」和「 - 」前後的文本?

  1. HY_5AP001KL10輸出5AP001KL10
  2. 5AP0015K20_HY輸出5AP0015K20
  3. HW-5AP002H20輸出5AP002H20
  4. 5AP002lE_LEE SPRING輸出5AP002lE
  5. NAS4021-2E- 12輸出NAS4021-2E-12

在上面提到的列表中我想刪除HY前後的符號_和HW前後-以及後面的所有符號_作爲第4條中提到的LEE SPRING,並且不得刪除最後一項的-2E或-12。有人可以幫助這個。上面提到的列表將是每個單元格的單個項目。

這裏是我的代碼......但問題是我不能夠「後需要刪除文本」,如圖列表項4

Sub Replace_Characters() 
    row_number = 1 

    Do 

     DoEvents 

     row_number = row_number + 1 
     the_description = Sheet2.Range("A" & row_number) 
     the_description = Replace(the_description, "HY", "") 
     the_description = Replace(the_description, "HY-", "") 
     the_description = Replace(the_description, "_HY", "") 
     the_description = Replace(the_description, "-HY", "") 
     the_description = Replace(the_description, "HY", "") 
     Sheet2.Range("A" & row_number) = the_description 
    Loop Until row_number = 20 

End Sub 
+2

到目前爲止,你的代碼是什麼?你在掙扎什麼?很高興看到你的代碼,但沒有人會從頭開始爲你寫代碼。 – teylyn

+0

如果您發佈了一個或兩個項目的預期輸出,您還將獲得更多信息。這種文字描述可能難以理解。產量是王道。 –

+0

這裏是我的代碼......但問題是我不能夠經過「_」,如下列表項4個 子Replace_Characters() ROW_NUMBER = 1 做 的DoEvents ROW_NUMBER = ROW_NUMBER +刪除文本1 the_description = Sheet2.Range(「A」&row_number) the_description =替換(the_description,「HY_」,「」) the_description =替換(the_description,「HY-」,「」) the_description =替換(the_description, 「_HY」,「」) the_description =替換(the_description,「-HY」,「」) the_description =替換(the_description,「HY」,「」) Sheet2.Range(「A」&row_number)= the_description Loop Until row_number = 20 End Sub –

回答

0

left(the_description,instr(the_description,"_")-1)將刪除「的_」及其之後的所有你的文字。
如果你做了許多這樣的替換,那麼在VBA中使用正則表達式可能會成爲你的最終解決方案。互聯網上有很多支持材料。

0

我建議寫一個函數。發送功能所需的信息和所有的規則可以只坐在那裏像這樣:

Function CleanData(Description As String) As String 

    Description = Replace(Description, "HY_", "", 1) 
    Description = Replace(Description, "_HY", "") 
    Description = Replace(Description, "HW-", "", 1) 
    Description = Replace(Description, "-HY", "") 

    Dim DescriptionArray() As String 
    DescriptionArray = Split(Description, "_") 
    Description = DescriptionArray(0) 

    CleanData = Description 

End Function 

Sub Test() 

    MsgBox CleanData("HY_5AP001KL10"), vbOKOnly + vbInformation, "Expected: 5AP001KL10" 
    MsgBox CleanData("5AP0015K20_HY"), vbOKOnly + vbInformation, "Expected: 5AP0015K20" 
    MsgBox CleanData("HW-5AP002H20"), vbOKOnly + vbInformation, "Expected: 5AP002H20" 
    MsgBox CleanData("5AP002lE_LEE SPRING"), vbOKOnly + vbInformation, "Expected: 5AP002lE" 
    MsgBox CleanData("NAS4021-2E-12"), vbOKOnly + vbInformation, "Expected: NAS4021-2E-12" 

End Sub 

我已經測試了5使用的情況下,輸出看起來好像沒什麼問題,但請隨時將它修改您的需求。

+0

感謝您的支持,我不能申請功能,因爲這些項目會不斷變化,並會有大名單。我使用查找和替換示例find --->「_ *」記錄了一個宏,如果我這樣刪除符號「_」後面的所有內容。 –

相關問題