试图在另一列中填写州名

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,你试过这个吗?

以上是关于试图在另一列中填写州名的主要内容,如果未能解决你的问题,请参考以下文章

excel如何判断某一列内容是不是包含在另一列中

如何在保持在另一列范围内的同时锻炼列中两个值之间的差异?

在另一列中使用一列中的值

在一列中选择该值未在另一列中出现 5 次的值

Pandas,对于一列中的每个唯一值,在另一列中获取唯一值

如何在 Hive SQL 中对一列中的数据进行分组并将其分布在另一列中?