|
本帖最后由 hanjia 于 2014-8-28 23:55 编辑
现在是2个不是相邻的单元格他也计算了
要2个相邻才计算的 比如: 52要相邻单元格的 这条是比如562 他就开始查找8了
这条是 xdragon 帮忙写的 非常感谢他
Sub t()
Dim arr, i&, line&, sr$, re(), cnt&, j&, k%, m&
arr = Range("A1:E" & Cells(Rows.Count, 1).End(xlUp).Row).Value
ReDim re(1 To UBound(arr), 1 To 2)
sr = 258
For i = 1 To UBound(arr)
If sr Like "*" & arr(i, 1) & "*" Then
cnt = cnt + 1
sr = Replace(sr, arr(i, 1), "")
End If
If cnt = 2 Then
line = i
For j = line + 1 To UBound(arr)
For k = 1 To UBound(arr, 2)
If CStr(arr(j, k)) = sr Then
re(j, 1) = 0: re(j, 2) = 0
For m = i + 1 To j - 1
re(m, 1) = m - i
re(m, 2) = j - m
Next
sr = 258
cnt = 0
i = j
GoTo nextline
End If
Next
Next
nextline:
End If
Next
Range("F1").Resize(UBound(re), 2) = re
End Sub
- Sub t()
- Dim arr, i&, x&, y&, sr$, re(), cnt&, j&, k%, m&
- arr = Range("A1:E" & Cells(Rows.Count, 1).End(xlUp).Row).Value
- ReDim re(1 To UBound(arr), 1 To 2)
- sr = 258
- For i = 1 To UBound(arr)
- If sr Like "*" & arr(i, 1) & "*" Then
- cnt = cnt + 1
- If x = 0 Then x = i Else y = i
- sr = Replace(sr, arr(i, 1), "")
- End If
- If cnt = 2 Then
- If y - x = 1 Then
- For j = i + 1 To UBound(arr)
- For k = 1 To UBound(arr, 2)
- If CStr(arr(j, k)) = sr Then
- re(j, 1) = 0: re(j, 2) = 0
- For m = i + 1 To j - 1
- re(m, 1) = m - i
- re(m, 2) = j - m
- Next
- sr = 258: cnt = 0: i = j: x = 0: y = 0
- GoTo nextline
- End If
- Next
- Next
- Else
- i = i - 1: cnt = 0: sr = 258: x = 0
- End If
- End If
- nextline:
- Next
- Range("F1").Resize(UBound(re), 2) = re
- End Sub
复制代码重新发你下。。刚才上传的附件貌似忘记把stop那行删除了
|
|