试图在另一列中填写州名
Posted
技术标签:
【中文标题】试图在另一列中填写州名【英文标题】:Trying to fill State names in another column 【发布时间】:2016-08-23 17:17:26 【问题描述】:我目前有一个电子表格,其中包含 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:需要对象”,但不确定出了什么问题。任何帮助将不胜感激!
【问题讨论】:
在 B1 中输入以下公式=Right(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
【讨论】:
【参考方案2】:我会这样去:
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
【讨论】:
@Nick,你试过这个吗?以上是关于试图在另一列中填写州名的主要内容,如果未能解决你的问题,请参考以下文章