|
楼主 |
发表于 2018-6-16 10:39
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 13782671637 于 2018-6-16 10:59 编辑
老师:以53楼为例:如果数据源在K列,公式在N列,需要修改以下:Sub test()
Dim brr(), sr()
tms = Timer
m = Cells(Rows.Count, 11).End(3).Row - 4
ar = [k5].Resize(m)
ReDim sr(1 To m, 1 To 1)
ReDim brr(0 To 2)
For i = 1 To m
t = ar(i, 1): t1 = Left(t, 1)
brr(t1) = brr(t1) + 1: If brr(t1) = 1 Then k1 = k1 + 1
If k1 = 2 Then k1 = i: Exit For
Next
s1 = 3 - Left(ar(1, 1), 1) - Left(ar(k1, 1), 1)
ReDim brr(0 To 2)
For i = 1 To m
t = ar(i, 1): t2 = Right(t, 1)
brr(t2) = brr(t2) + 1: If brr(t2) = 1 Then k2 = k2 + 1
If k2 = 2 Then k2 = i: Exit For
Next
s2 = 3 - Right(ar(1, 1), 1) - Right(ar(k2, 1), 1)
s = s1 & s2
If k1 > k2 Then k0 = k1 Else k0 = k2
For i = k0 To m
t = ar(i - 1, 1): t11 = Left(t, 1): t12 = Right(t, 1)
t = ar(i, 1): t21 = Left(t, 1): t22 = Right(t, 1)
If t11 = t21 Then s1 = Left(s, 1) Else s1 = 3 - t11 - t21
If t12 = t22 Then s2 = Right(s, 1) Else s2 = 3 - t12 - t22
s = s1 & s2
sr(i, 1) = s
Next
[n5].Resize(m) = sr
MsgBox Format(Timer - tms, "0.000s")
End Sub
|
|