2013-03-28 34 views
-1

我是一名沒有經驗的VBA或Python編程,雖然學習。 我有一個excel文件,其中包含一個非常特定的字符串ab/c/defg/0123/456內的一個可變長度的字符串(文本&數字)。變量字符串始終位於電子郵件的主題標題中。爲了達到目的,我已經將這個提取出來。在excel中查找特定的字符串,複製特定的字符串並複製到同一行中的新單元格

我想要完成的是在excel文件中找到字符串ab/c/defg/0123/456,然後將該特定字符串複製到當前excel中同一行中的空單元格。如果未找到該字符串,則單元格將保留爲空。爲了使它更復雜,字符串也可以顯示爲ab/c/defg/**123**/456或反斜槓是正斜槓。

Excel中的功能分割,MID,左,右不如字符串可以隨機字符串中出現有所幫助:像下面這樣:

ROW1:AB/C/DEFG/0123/456 blablalbla 03/10/2012 - 05/11/2012 - blablabla。
row2:blablalbla 04/10/2012 - 01/11/2012 - blablabla blablabla,blablabla blablabla ab/c/defg/0123/456。
ROW3:blablalbla AB/C/DEFG/0123/456 blablabla
ROW4:blablalbla 13/10/2012 - blablabla
ROW5:blablalbla; blablabla blablablablablabla blablabla AB/C/DEFG/0123/456 - blablabla 1234456

結果將是: CD
ROW1:AB/C/DEFG/0123/456 blablalbla 03/10/2012 - 5月11日/ 2012年 - blablabla。 AB/C/DEFG/0123/456
等....
行4列d將比沒有價值/空

該文件包含大約9000行,但在分析不同郵箱/ excel文件時可能會更大。

有什麼想法?

+0

是字符串總是字母數字字符相同的組合,或者可以任意盤符去你已經把「A」,以及任何數量的,你已經把「2 「? – kaybee99

+0

歡迎來到SO!我們不爲您編寫代碼,但如果您的代碼存在問題,我們會爲您提供幫助。所以一定要去,如果您需要幫助,請特別詢問我們後來的問題。 – TerryA

+0

Kaybee99,你完全正確的任何信件可以去哪裏「a」放置和相同的「2」可以是任何數字。 – koomic

回答

0

首先,可能最好的辦法是使用Range.Find方法。如果找到字符串,它會給你提供信息,並返回找到字符串的範圍/單元格(如果有的話)。我提醒你的是 - 請注意方法可能不需要的其他參數,但看起來你最終必須使用它們。

這是link to method description。您將在其中找到的示例非常有用。 此外,還請檢查.Range.FindNext屬性。

您可以使用宏記錄器的一些經驗,因爲它完全支持.Find功能。

如果您終於知道您在表單中的結果在哪個單元格中,您可以非常輕鬆地到達該行內的任何單元格,例如。從右側看第一個空單元格時,以這種方式獲得:

Dim rngFound as Range 
'if rngFound represent cell where is your string 
'then first free cell from the right: 
Dim rngFreeThisRow as Range 
Set rngFreeThisRow = Cells(rngFound.Row, Columns.Count).End(xlToLeft).Offset(0,1) 

備註斜槓和反斜槓。你可能需要解僱你搜索幾次,每次你將不得不改變'搜索數據',例如。:

  1. 在第一步驟中,您可以搜索ab/c/defg/123/456(用於精確匹配)
  2. 如果不是在下一步找到您可以搜索Replace("ab/c/defg/123/456". "/", "\")
  3. 但它會可能更好,如果有任何一種你的字符串中的模式,使用替代標記,如*?,例如。 ab?c?defg?123?456ab?c?defg?*123?456
  4. 等等...
+0

感謝您快速回復KazJAw,我會盡力在本週末進行測試。 – koomic

相關問題