|
ymq123 发表于 2013-3-31 11:32
不好意思,还要麻烦你,请把选取相同和不同的代码分开编写。谢谢
把代码写成一个公用过程,直接调用 就行了,
参数说明,
第一个参数为数据源区域,
第二个参数为 相同或者不同,true 为相同,false 为不同
第三个参数为 数据写入的目标单元格
按钮里用调用了2次,第一次处理相同,第二次处理不同
- Private Sub CommandButton1_Click()
- Range("J2:P100").ClearContents
- ChuLi Range("A2:H23"), True, Range("J2")
- Range("S2:Y100").ClearContents
- ChuLi Range("A2:H23"), False, Range("S2")
- End Sub
- Private Sub ChuLi(ByVal DaYuan As Range, ByVal Xt As Boolean, ByVal MuBiao As Range)
- Dim D As Object, Arr(), Brr(), Crr(), Drr(), Ar() As String, S As String
- Dim Hx As Long, X As Long, Lx As Long
- Set D = CreateObject("Scripting.dictionary")
- Arr = Range("A2:H23").Value
- For Hx = 1 To UBound(Arr)
- For Lx = 1 To UBound(Arr, 2)
- S = S & "-" & Arr(Hx, Lx)
- Next
- D(S) = D(S) + 1
- S = ""
- Next
- Brr = D.items
- ReDim Crr(1 To UBound(Brr) + 1, 1 To UBound(Arr, 2))
- Arr = D.keys
- If Xt Then
- For Hx = 0 To UBound(Brr)
- If Brr(Hx) = 1 Then
- X = X + 1
- Ar = Split(Arr(Hx), "-")
- For Lx = 1 To UBound(Ar) - 1
- Crr(X, Lx) = Ar(Lx)
- Next
- End If
- Next
- Else
- For Hx = 0 To UBound(Brr)
- If Brr(Hx) > 1 Then
- X = X + 1
- Ar = Split(Arr(Hx), "-")
- For Lx = 1 To UBound(Ar) - 1
- Crr(X, Lx) = Ar(Lx)
- Next
- End If
- Next
- End If
- MuBiao.Resize(X, UBound(Crr, 2)).Value = Crr
- End Sub
复制代码 |
|