我刚开始使用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
答案 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