如何从一个单元格中提取字符串中的前两个字符并打印到另一个单元格

时间:2019-06-28 16:34:10

标签: excel vba

我正在尝试编写一个宏,该宏将采用字符串中的前两个字符,使用switch语句比较它们​​,然后将相应的信息输出到另一单元格列。我写了一个脚本,但是似乎什么也没做。我是VBA的新手,这就是为什么这让我头疼。

我尝试了几种在网上找到的不同方法。我看过使用Left()提取子字符串的示例,以及如何在VB中编写switch语句的示例。我不确定我的错误在哪里,它似乎可以正确编译,但是什么也不输出。

Sub PullLocation()
    Dim i As Integer  

    For i = 2 To 170
        Dim contents As String
        contents = Left(Ai, 2)
        Select Case contents
            Case "FC"
                Cells(i, AJ) = "Fort Collins"
            Case "BR"
                Cells(i, AJ) = "Broomfield"
            Case "BO"
                Cells(i, AJ) = "Boulder"
            Case "CC"
                Cells(i, AJ) = "Canon City"
            Case "FR"
                Cells(i, AJ) = "Franktown"
            Case "FM"
                Cells(i, AJ) = "Fort Morgan"
            Case "GU"
                Cells(i, AJ) = "Gunnison"
            Case "GR"
                Cells(i, AJ) = "Granby"
            Case "GJ"
                Cells(i, AJ) = "Grand Junction"
            Case "GO"
                Cells(i, AJ) = "Golden"
            Case "LJ"
                Cells(i, AJ) = "La Junta"
            Case "LV"
                Cells(i, AJ) = "La Veta"
            Case "MO"
                Cells(i, AJ) = "Montrose"
            Case "SA"
                Cells(i, AJ) = "Salida"
            Case "SF"
                Cells(i, AJ) = "State Forest"
            Case "SS"
                Cells(i, AJ) = "Steamboat Springs"
            Case Else

        End Select
    Next i
End Sub

它应该包含两个代表缩写城市名称的字符。应该在另一列单元格中输出完整的城市名称,并通过将单元格留空来忽略任何不匹配的缩写。

我没有收到任何错误消息,但是我的Excel工作表中也没有任何变化。

1 个答案:

答案 0 :(得分:0)

我猜正在发生的事与“ AJ”和“ Ai”有关。将AJ更改为36。Ai应该更改为“ Cells(i,35).Value”(AI处的值和任何行号)。我还将在循环开始之前放置“将内容作为字符串存储”,但在循环中保留“ contents = Left(Cells(i,35).Value,2)”。

它看起来像这样:

stdout_stream.clear();
stdout_stream.seekg(stdout_stream.tellg());