我正在使用包含 100,000 多行的固定格式文本文件,我将其复制并粘贴到名为 DATA 的工作表中。此工作表中的所有行都以 AVS 或 AVD 开头。我有下面的代码,它通过一个IF
MID
函数循环遍历数据表。如果行的前 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
数据表中的样本:
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)
铜