2013-02-17 47 views
0

如果字符串在第9個字符中有 - 符號,我需要一個宏將一列字符串的一部分從A列剪切並粘貼到B列。我在stackoverflow上發現了一些將複製/粘貼文本部分但不剪切/粘貼的代碼。我的數據是這樣的使用宏剪切並粘貼一部分字符串

SUBIAIUP-456253 
SUBIAIUP-254 

這裏是我到目前爲止的代碼:

Public Sub LeftSub() 
Dim cell As Range 
Dim sourceRange As Range 

Set sourceRange = Sheet1.Range("A1:A180") 

For Each cell In sourceRange 

    If Mid(cell.Value, 9, 1) = "-" Then 

    'this code should cut/paste the value from col A to col B, not copy/paste 
    Sheets("Sheet1").Range("B" & cell.Row).Value = Mid(cell.Value, 9, 20) 

    End If 
    Next 
End Sub 

任何幫助深表感謝。
謝謝。

+0

如果您的數據如上面示例中所示,那麼您不需要VBA。您也可以使用Text To Columns :) – 2013-02-17 06:34:48

回答

3

如果你願意,你都粘貼到從A列刪除B列的值,使用:

If Mid(cell.Value, 9, 1) = "-" Then 
    cell.Offset(, 1).Value = Mid(cell.Value, 9) 
    cell.Value = Left(cell, 8) 
End If 

由於希德和佈雷特指出,我們並不需要的字符參數的數量中秋節函數,如果我們從中點獲取其餘的值。如果您想在列B值的開始處顯示短劃線,請將中點設置爲9.如果您想省略它,請將其設置爲10.

如果要將列A中的整個值剪切/粘貼到B,請使用:

If Mid(cell.Value, 9, 1) = "-" Then 
    'this code WILL cut/paste the value from col A to col B, not copy/paste 
    cell.Cut cell.Offset(, 1) 
End If 
+0

+1 Nice one :)您可能想使用'Mid(cell.Value,10)'而不是'Mid(cell.Value,9,20)' – 2013-02-17 06:56:07

+0

+1' mid $(cell.value,10)':) – brettdj 2013-02-17 09:56:40

+0

謝謝,男士們。我重構了陳述的左邊,並沒有看右邊。 @brettdj:我聽說mid $返回一個字符串,而mid則返回一個變體,而$ mid可能表現更好。真的嗎? – 2013-02-17 14:49:22

相關問題