有条件的循环。直到数字结束

时间:2019-05-22 07:20:18

标签: excel vba

我的牢房有完整的地址。我想将街道名称和街道编号复制到下一个单元格。例如“ STRANDVEJEN 100 MIDDELFART丹麦”

在此示例中,我希望复制“ STRANDVEJEN 100”。

当前,所有内容都将复制到下一个单元格。 但我需要如何继续的建议

Sub move()
    Range("C3:C2000").Copy Range("D3:D2000")
    Do until......
End Sub

我需要帮助直到完成。

2 个答案:

答案 0 :(得分:1)

尝试:

Option Explicit

Sub CopyYes()

    Dim arr As Variant, strSplit As Variant
    Dim i As Long

    With ThisWorkbook.Worksheets("Sheet1")

        arr = .Range("C3:C2000")

        For i = LBound(arr) To UBound(arr)

            strSplit = Split(arr(i, 1), " ")

            .Range("E" & i + 2).Value = strSplit(0)

            .Range("F" & i + 2).Value = strSplit(1)

        Next i

    End With

End Sub

结果:

enter image description here

答案 1 :(得分:0)

这是一个将对字符串执行“剪切”的函数。它不是很漂亮,毫无疑问用一个简单的reg-ex命令会更好,但是..

Function untilnumeric(txt As String) As String
    Dim i As Long
    Dim started As Boolean
    For i = 1 To Len(txt)
        If Asc(Mid(txt, i, 1)) > 47 And Asc(Mid(txt, i, 1)) < 58 Then
            started = True
        Else
            If started = True And Asc(Mid(txt, i, 1)) = 32 Then
                untilnumeric = Left(txt, i - 1)
                Exit For
            End If
        End If
    Next
End Function

您可以像这样使用它在C列上执行-将结果复制到D:

Range("D3:D2000").Value = Range("C3:C2000").Value
For Each c In Range("D3:D2000").Cells
    c.Value = untilnumeric(c.Value)
Next

注意:稍作修改以拾取数字部分内的所有字母。例如100A