2013-12-03 121 views
0

我有一列有美國州名縮寫(MI,NY,FL等)。我有一個問題,有一個被列爲「NJ NJ」的觀察結果。這一觀察結果每週在同一列內移動。Excel VBA - 子字符串和粘貼

我想創建一個宏,它將每個觀察子字符串轉換爲兩個字符,然後刪除所有字後面的內容。

我能否使用Mid函數來抓取前兩個字符,然後將其粘貼到原始值的上方。此外,是否適合用一種方法來抵消還是有辦法一次完成這一切?

謝謝!

+2

只需使用'Left(value,2)' –

回答

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 
1

如果你想你的結果通過從源小區一個小區地偏移,然後通過Daniel Cook公式工作正常。另一方面,如果你希望你的結果覆蓋源單元格,你將不得不復制單元格的結果(使用與上面相同的公式),並將其粘貼爲特殊值作爲源單元格頂部的值(您可以一次對多個單元格執行此操作),或者編寫一個VBA子文件。

我個人發現它更簡單的「複製和粘貼特殊值」的方式。