2016-08-23 3 views
0

に州名を埋めようと、私は現在、そのような列A内の都市の名前のすべてを持っているスプレッドシートを持っている:私がやりたい何別の列

Dallas, TX 
New York, NY 
Miami, FL 

が最初にこのからの状態を抽出しています列と列に配置しますB.

私の現在の試みは、次のようになります。「:オブジェクト必要なランタイムエラー424」と間違っている何が起こっているのかわからない

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 

が、私はエラーを取得しています。どんな助けもありがとう!

+1

をB1には、以下の式 '=右(A1,2)を入れ'とダウンコピーします。対応するAの最後の2文字が使用されます。 –

答えて

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