【发布时间】:2014-01-15 15:19:11
【问题描述】:
我想在一列长度和格式相同的字符串中搜索错误:(例如:B2013JMSL10764、B2013JMSL11030)。
错误是指在数字应该是字母的地方,反之亦然,例如:字母O而不是数字0。
是否可以找到所有有错误的字符串并将它们复制到一个新列中,但与找到它们的行相同。
谢谢。对于如何解决这个问题的任何建议,或者我可能需要的一些提示和代码行,我将不胜感激。
这是我目前所拥有的:
Sub sampleNoCheck()
Sheets("sheet1").Activate
Dim uColumn As String
' if your data is in a different column then change A to some other letter(s)
uColumn = "j"
Dim i As Long, j As Long, r As Range
For i = 2 To Range(uColumn & Rows.Count).End(xlUp).Row
Set r = Range(uColumn & i)
{Dim part1 As String, part2 As Integer, part3 As String, part6 As String, part7 As String, part8 As String, part4 As Integer
If Len(r) = 14 Then
part1 = Left(r, 1)
part2 = Mid(r, 2, 5)
part3 = Mid(r, 6, 6)
part6 = Mid(r, 7, 7)
part7 = Mid(r, 8, 8)
part8 = Mid(r, 9, 9)
part4 = Right(r, 5)
ElseIf Len(r) = 15 Then 'possibility of having an extra text digit
Dim part5 As String
part1 = Left(r, 1)
part2 = Mid(r, 2, 5)
part3 = Mid(r, 6, 6)
part6 = Mid(r, 7, 7)
part7 = Mid(r, 8, 8)
part8 = Mid(r, 9, 9)
part4 = Mid(r, 10, 14)
part5 = Right(r, 1)
Else
MsgBox "error in row " & i
End If
If IsText(part1) = true And IsNumber(part2) = True And IsText(part3) = True And IsText(part6) = True And IsText(part7) = True And IsText(part8) = True And IsNumber(part5) = True And (part5 = d Or part5 = e Or part5 = f) Then
Next i
Else
MsgBox "error in row " & i
End Sub
【问题讨论】:
-
这是否意味着在 excel 中使用 vba 完成?
-
您使用的是哪种技术?
-
嗨,到目前为止你有什么收获?你能给我们看一些代码吗?
-
@npst 是的,我打算在 excel 中组织这列 dta,理想情况下它包含 1500 行数据。
-
@msturdy 对不起,我仍然不知道如何解决这个问题,到目前为止还没有代码完成。