2013-02-17 82 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