分享

Excel VBA 找出选定范围不重复值和重复值

 高微 2020-08-22
Sub 找出选定范围内不重复的值() 
    On Error Resume Next 
   
    Dim As Object 
    Set d = CreateObject("scripting.dictionary"
    For c_i = 1 To selection.Columns.Count 
    For Each ce In selection.Columns(c_i).Cells 
        'd.Add ce.Value, 1 
        If ce <> "" Then 
            'D(ce.Value) = "" 
            If d.Exists(ce.Value) Then 
                d(ce.Value) = d(ce.Value) + 1 
            Else 
                d(ce.Value) = 1 
            End If 
        End If 
    Next 
    Next 
    'Debug.Print d.Count 
    If MsgBox("是否在邻列显示出现次数?", vbYesNo, "统计次数") = vbYes Then 
        标记 = True 
    End If 
    e = InputBox("希望在那个单元格下生成结果:""结果输出", Chr(97 + selection.Columns(1).Cells(1).Column + 2) & selection.Columns(1).Cells(1).row) 
    m = Left(e, 1) 
    jj = Mid(e, 2, 1) 
    Range(m & jj) = "不重复值" 
    If 标记 = True Then 
        Range(Chr((Asc(m) + 1)) & jj) = "频率" '大于1的值 
    End If 
    For Each Key In d.Keys 
        Range(m & (jj + 1)) = Key 
        If 标记 = True Then 
'            If d(Key) > 1 Then Range(Chr((Asc(m) + 1)) & (jj + 1)) = d(Key) 
    Range(Chr((Asc(m) + 1)) & (jj + 1)) = d(Key) 
        End If 
        jj = jj + 1 
    Next 
    Set d = Nothing 
    '最后进行排序 
'     Range(m & selection.Columns(1).Cells(1).row & ":" & Chr((Asc(m) + 1)) & (jj)).Select 
    Range(e & ":" & Chr((Asc(m) + 1)) & (jj)).Sort Key1:=Range(m & Mid(e, 2, 1) + 1), Order1:=xlAscending, HEADER:=xlYes _ 
    , OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
    SortMethod:=xlPinYin, DataOption1:=xlSortNormal 
End Sub 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约