|
发表于 2013-7-8 21:11
|
显示全部楼层
本楼为最佳答案
虽然你没有清楚解释位置不同,顺序不同的意思,但是既然你说不冲突,我就把代码修改一下。
另:83变85是因为我最后增加的测试数据,你看看对不对- Sub tj()
- Dim i&, Myr&, arr1, arr, a(1 To 3), n&, j&, m&
- Myr = Sheet1.[a65536].End(xlUp).Row
- arr1 = Sheet1.Range("a1:a" & Myr)
- [e1:e5] = 0
- arr = [e1:e5]
- a(1) = Left([b1], 1)
- a(2) = Mid([b1], 2, 1)
- a(3) = Right([b1], 1)
- For i = 1 To UBound(arr1)
- m = 0
- n = 0
- If Left(Trim(arr1(i, 1)), 1) = a(1) Then n = n + 1
- If Mid(Trim(arr1(i, 1)), 2, 1) = a(2) Then n = n + 1
- If Right(Trim(arr1(i, 1)), 1) = a(3) Then n = n + 1
- If InStr(Join(a), Left(Trim(arr1(i, 1)), 1)) Then m = m + 1
- If InStr(Join(a), Mid(Trim(arr1(i, 1)), 2, 1)) Then m = m + 1
- If InStr(Join(a), Right(Trim(arr1(i, 1)), 1)) Then m = m + 1
- If n = 0 Then
- arr(4, 1) = arr(4, 1) + 1
- ElseIf n = 1 Then
- arr(3, 1) = arr(3, 1) + 1
- ElseIf n = 2 Then
- arr(2, 1) = arr(2, 1) + 1
- ElseIf n = 3 Then
- arr(1, 1) = arr(1, 1) + 1
- End If
- If m = 3 And Val(a(1)) + Val(a(2)) + Val(a(3)) = Val(Left(Trim(arr1(i, 1)), 1)) + Val(Mid(Trim(arr1(i, 1)), 2, 1)) + Val(Right(Trim(arr1(i, 1)), 1)) Then arr(5, 1) = arr(5, 1) + 1
- Next
- [e1].Resize(5, 1) = arr
- End Sub
复制代码 |
|