Excel IF/MID 显示附加数据的循环结果

Excel IF/MID loop result showing additional data

我正在处理一个包含 100,000 多行的固定格式文本文件,我将其复制并粘贴到名为 DATA 的 sheet 中。此 sheet 中的所有行都以 AVS 或 AVD 开头。我有下面的代码,它使用 IF MID 函数循环遍历 DATA sheet 。如果该行的前 3 个字符以 AVS 开头,我只希望它提取数据。当它运行时,它会正确地从 AVS 行检索数据,但随后的行显示相同的数据,即使它们以 AVD 开头。我在下面列出了一个示例。我认为这可能与错误处理有关,但我不知道。我没有收到任何错误,我只是收到了不需要的额外数据。你们能提供的任何帮助都会很棒!

Sub AVS()

Dim ws As Worksheet
Dim ws1 As Worksheet

Set ws = ThisWorkbook.Worksheets("DATA")
Set ws1 = ThisWorkbook.Worksheets("AVS")
Dim lastRow, myLoop, newValue
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).row
Application.ScreenUpdating = False


'Range("A" & lastRow).ClearContents

For myLoop = 1 To lastRow

   If MID(ws.Range("A" & myLoop).Value, 1, 3) = "AVS" Then
      newValue = MID(ws.Range("A" & myLoop).Value, 48, 4)
End If

        ws1.Range("A" & myLoop).Value = newValue

Next

 Application.ScreenUpdating = True
End Sub

数据样本 sheet:

AVS00001              Y6678                NN  B5UP 
AVD00001               6678                N INQN B5UP6678
AVS00001              Y6678                NN  0067
AVD00001               6678                N INQN 00676678
AVS00001              G6678                NN  1381
AVD00001               6678                N INQN 13816678
AVS00001              Y6678                NN  1922
AVD00001               6678                N INQN 192210-61096-58
AVD00001               6678                N INQN 19226678 
AVD00001               6678                N INQN 19226678 
AVS00001              Y6678                NN  5018

当前结果

B5UP (CORRECT)
B5UP (WRONG, ROW STARTS WITH AVD)
0067 (CORRECT)
0067 (WRONG, ROW STARTS WITH AVD)
1381 (CORRECT)
1381 (WRONG, ROW STARTS WITH AVD)
1922 (CORRECT)
1922 (WRONG, ROW STARTS WITH AVD)
1922 (WRONG, ROW STARTS WITH AVD)
1922 (WRONG, ROW STARTS WITH AVD)
5018 (CORRECT)

如果我从评论中理解正确,这应该有效:

Dim RowCounter as long
RowCounter = 1 

For myLoop = 1 To lastRow
    If MID(ws.Range("A" & myLoop).Value, 1, 3) = "AVS" Then
        newValue = MID(ws.Range("A" & myLoop).Value, 48, 4)
        ws1.Range("A" & RowCounter).Value = newValue
        RowCounter = RowCounter + 1
    End If

Next