上年底增加一定值我有一個包含值看起來像這樣一個Excel工作表:VBA腳本複製值,代替正斜槓和合並,同時在Excel
BL/ER/D11/fmp000005578/0001
BL/ER/D11/fmp000005578/0002
BL/ER/D11/fmp000005578/0002
我需要他們這個樣子:
/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0001_1.jpg
/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0002_1.jpg
/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0003_1.jpg
的模式幾乎是:
- 從末尾刪除號碼。 (
BL/ER/D11/fmp000005578/
) - 複製該值,用該下劃線替換該特定值的正斜槓。 (
BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_
) - 加回數字。 (
BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0001
) - 將
_1.jpg
加到最後。 (BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0001_1.jpg
) - 將
/data01/
加到前面。 (/data01/BL/ER/D11/fmp000005578/BL_ER_D11_fmp000005578_0001_1.jpg
)
需要對同一列中的每個值重複該過程。
在一個電子表格中有多個工作表/選項卡,所以不管怎樣,如果可能的話宏應該可以在多個工作表/選項卡上執行。
我目前擁有的代碼是:
Sub FileDirectoryRegExTest()
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A2:A4620")
For Each c In Myrange
strPattern = "([A-Z]{2}\/[A-Z]{2}\/[A-Z][0-9]{2}\/[a-z]{3}[0-9]{9}\/)([0-9]{4})"
If strPattern <> "" Then
strInput = c.Value
strReplace = "$1"
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
c.Offset(0, 1) = regEx.Replace(strInput, "$2")
Else
c.Offset(0, 1) = ""
End If
End If
Next
End Sub
我用以前的功能的代碼,但我也不太清楚,如果我可以重新用這個代碼來執行這些特定功能。
如果您可以編輯此腳本或創建一個執行此功能的新腳本,那將非常棒,謝謝!
謝謝!
Aydan H.
您的值'BL/ER/D11/fmp000005578/0001'具有恆定的長度嗎? – avb
@avb有62000多個值,但從目前爲止我所看到的,是的。他們保持這種一般的格式,正如我在上面的代碼中使用RegEx所強調的那樣。 –