2016-08-23 86 views
0

我現在有一個具有所有城市的名字在列A像這樣一個電子表格來填寫國家名稱:嘗試另一列

Dallas, TX 
New York, NY 
Miami, FL 

我想要做的就是從這個第一提取狀態列,並放置在B列

我現在的嘗試是這樣的:

Sub StateFill() 

Dim x As Long 
For x = 1 To 65536 
    If InStr(1, Sheet1.Range("$A$" & x), ", AL") Then 
     Sheet1.Range("$B$" & x) = Sheet1.Range("$B$" & x) & "AL" 
    End If 
Next 

For x = 1 To 65536 
    If InStr(1, Sheet1_metro.Range("$A$" & x), ", AK") Then 
     Sheet1.Range("$B$" & x) = Sheet1.Range("$B$" & x) & "AK" 
    End If 
Next 

... 

For x = 1 To 65536 
    If InStr(1, Sheet1.Range("$A$" & x), ", WY") Then 
     Sheet1.Range("$B$" & x) = Sheet1.Range("$B$" & x) & "WY" 
    End If 
Next 

End Sub 

,我發現了錯誤「運行時錯誤424:所需的對象」,而不是知道發生了什麼錯誤。任何幫助,將不勝感激!

+1

在B1把下面的公式'=右(A1,2)'和複製下來。它將採取相應的A. –

回答

1

此:

Sheet1_metro.Range

沒有在子定義。

這是一種替代方法:

Sub StateFill() 
    Dim x As Long, N As Long 

    With Sheet1 
     N = .Cells(Rows.Count, 1).End(xlUp).Row 
     For x = 1 To N 
      If Right(.Range("$A$" & x), 4) Like ", [A-Z][A-Z]" Then 
       .Range("$B$" & x) = .Range("$B$" & x) & Right(.Range("$A$" & x), 2) 
      End If 
     Next 
    End With 
End Sub 
0

我會去像如下:

Sub main() 
    With Sheet1 
     With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)) 
      .Offset(,1).Value = .Value 
      .Offset(,1).Replace What:="*, ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 
     End With 
    End With 
End Sub 
+0

@Nick中的最後兩個字符,你試過這個嗎? – user3598756

相關問題