String Excel VBA-子字符串和;粘贴

String Excel VBA-子字符串和;粘贴,string,excel,vba,substring,String,Excel,Vba,Substring,我有一个列有美国各州的缩写(MI、NY、FL等)。我有一个问题,有一个观察被列为“NJ NJ”。这一观察每周都在同一列中移动 我想创建一个宏,将每个观察值子串成两个字符,然后删除所有后记 我是否能够使用Mid函数获取前两个字符,然后将其粘贴到原始值的上方。此外,用一个来抵消是合适的还是有一种方法可以一次全部抵消 谢谢 假设您的列表位于第1列,从第1行开始,下面的宏将执行此操作。显然,您可以对代码进行很多改进和错误检查,但这应该可以让您开始 Sub FixStates() Dim lRow As

我有一个列有美国各州的缩写(MI、NY、FL等)。我有一个问题,有一个观察被列为“NJ NJ”。这一观察每周都在同一列中移动

我想创建一个宏,将每个观察值子串成两个字符,然后删除所有后记

我是否能够使用Mid函数获取前两个字符,然后将其粘贴到原始值的上方。此外,用一个来抵消是合适的还是有一种方法可以一次全部抵消


谢谢

假设您的列表位于第1列,从第1行开始,下面的宏将执行此操作。显然,您可以对代码进行很多改进和错误检查,但这应该可以让您开始

Sub FixStates()

Dim lRow As Long
Dim lCol As Long
Dim strContent As String

    lRow = 1
    lCol = 1

    Do While Cells(lRow, lCol) <> ""
        strContent = Trim(Cells(lRow, lCol))
        If Len(strContent) > 2 Then Cells(lRow, lCol) = Left(strContent, 2)
        lRow = lRow + 1
    Loop

End Sub
Sub-FixStates()
暗淡的光线和长的一样
暗淡的lCol尽可能长
作为字符串的Dim strContent
lRow=1
lCol=1
“当电池(lRow、lCol)”时执行
strContent=微调(单元格(lRow,lCol))
如果Len(strContent)>2,则单元格(lRow,lCol)=左侧(strContent,2)
lRow=lRow+1
环
端接头

如果希望结果与源单元格偏移一个单元格,则公式by可以正常工作

另一方面,如果希望结果覆盖源单元格,则必须用结果复制单元格(使用与上面相同的公式),并将“特殊值”粘贴到源单元格顶部(可以一次对多个单元格执行此操作),或写入VBA子单元格

我个人觉得“复制并粘贴特殊值”的方式更简单。

只需使用
Left(value,2)