循环使用If语句检查= isnumber()

时间:2018-03-13 20:15:58

标签: excel vba excel-vba

我刚开始使用VBA,我想帮助编写一个使用=ISnumber()进行搜索的IF语句,因为它循环遍历所有A列,直到遇到空单元格。

我正在处理的数据是一个文本文件,它被放到sheet1上,并且只有填充A列的数据。

在sheet2上我想按一个开始循环的按钮。循环需要检查工作表1的每一行,以查看该行的前三个数字,例如:=ISNUMBER(SEARCH("101",A1))如果符合此条件,则完成以下操作:=MID(A1,24,6)

有两个不同的行开始:101和621。

我的伪代码逻辑如下:

Sub Button1_Click()

IF 'first iteration
    Row A1 starts with "101"
        THEN Add =MID(A1,24,6) to cell A1 of sheet 2
    ELSE IF
        Row starts with "621"
            THEN Add =MID(A1,55,24) to cell B1 of sheet 2
                AND add =MID(A1,30,10) to cell C1 of sheet 2
    ELSE
        Skip this row
End If

IF 'second iteration
    Row A2 starts with "101"
        THEN Add =MID(A2,24,6) to cell A2 of sheet 2
    ELSE IF
        Row starts with "621"
            THEN Add =MID(A2,55,24) to cell B2 of sheet 2
                AND add =MID(A2,30,10) to cell C2 of sheet 2
   ELSE
        Skip this row
End If
'iterations continue until empty cell

End Sub

1 个答案:

答案 0 :(得分:1)

您可以这样做 - 您可能需要更改工作表名称以适应。也就是说,你不需要VBA,你可以用公式来做。

Sub Button1_Click()

Dim r As Range

With Sheet1
    For Each r In .Range("A1", .Range("A" & Rows.Count).End(xlUp))
        If Left(r, 3) = "101" Then
            Sheet2.Range(r.Address).Formula = "=MID(Sheet1!" & r.Address & ",24,6)"
        ElseIf Left(r, 3) = "621" Then
            Sheet2.Range(r.Offset(, 1).Address).Formula = "=MID(Sheet1!" & r.Address & ",55,24)"
            Sheet2.Range(r.Offset(, 2).Address).Formula = "=MID(Sheet1!" & r.Address & ",30,10)"
        End If
    Next r
End With

End Sub