|
发表于 2018-10-8 15:57
来自手机
|
显示全部楼层
本帖最后由 lss001 于 2018-10-8 20:43 编辑
Function WEN_LEN(rng As Range, x)
Dim ar, br, cr, i, j, k, y 'x=1温x=2冷
ar = rng: ReDim br(1 To UBound(ar), 1 To 2)
ReDim cr(1 To UBound(ar), 0)
Set d = CreateObject("scripting.dictionary")
Set b = CreateObject("scripting.dictionary")
For k = UBound(ar) To 1 Step -1
If ar(k, 1) <> "" Then Exit For
cr(k, 0) = ""
Next
If Len(ar(k, 1)) = 2 Then y = 2
For i = 1 To k
br(i, 1) = Mid(ar(i, 1), 1, 1)
If y = 2 Then br(i, 2) = Mid(ar(i, 1), 2, 1)
If i > 1 Then
d.RemoveAll
For j = i To 1 Step -1
If br(j, 1) <> "" Then d(br(j, 1)) = ""
If d.Count = 2 Then Exit For
Next
If y = 2 Then
b.RemoveAll
For j = i To 1 Step -1
If br(j, 1) <> "" Then b(br(j, 2)) = ""
If b.Count = 2 Then Exit For
Next
If x = 1 And d.Count > 1 And b.Count > 1 Then cr(i, 0) = d.keys()(1) & b.keys()(1)
If x = 2 And d.Count > 1 And b.Count > 1 Then cr(i, 0) = _
(3 - d.keys()(0) - d.keys()(1)) & (3 - b.keys()(0) - b.keys()(1))
Else
If x = 1 And d.Count > 1 Then cr(i, 0) = d.keys()(1)
If x = 2 And d.Count > 1 Then cr(i, 0) = 3 - d.keys()(0) - d.keys()(1)
End If
If d.Count < 2 Or br(i, 1) = "" Then cr(i, 0) = ""
If y = 2 And b.Count < 2 Then cr(i, 0) = ""
End If
Next
cr(1, 0) = "": WEN_LEN = cr
End Function |
评分
-
1
查看全部评分
-
|