2013. 6. 17. 15:17

매크로 위 아래 줄 비교 하기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

회사와 직급, 이름을 기준으로 한 회사에 두명 이상이 등록되어 있으면 검토하는 매크로입니다.

수작업을 거쳐야 하는데 필터를 이름->직급->회사 순으로 내림차순 정렬하셔야 합니다. 

이렇게 하면 회사 기준 -> 직급 -> 이름으로 정렬됩니다.  

나머지는 실제 실행하면서 확인하시길 바랍니다. 


row-delete.xlsm




'컬럼을 비교해서 삭제하는 부분입니다. 

Sub chkColumnsNext()


    Range(Cells(7, 14), Cells(100, 15)).Delete

       


    Sheets(1).Select

    Cells(2, 2).Select

    ActiveCell.FormulaR1C1 = "=COUNTA(R[5]C[4]:R[10000]C[4])"

    sameRowCnt = 1

    colCnt = Cells(2, 2)

    

    i = 7

    Do While i < colCnt + 7

        Cells(2, 4) = i

        Cells(i, 2).Select

        

        stdColName = Cells(i, 2)

        stdColType = Cells(i, 3)

        stdColLen = Cells(i, 4)

     

        cmpColName = Cells(i + 1, 2)

        cmpColType = Cells(i + 1, 3)

        cmpColLen = Cells(i + 1, 4)

    

        '이름이 같으면 타입을 비교함.

        If stdColName = "신원제품" Then

            aaa = bbb

        End If

        If stdColName = cmpColName Then

            sameRowCnt = sameRowCnt + 1

            If stdColType = cmpColType And stdColLen = cmpColLen Then

                Cells(i + 1, 2).Select

                Selection.EntireRow.Delete

            ElseIf stdColType <> cmpColType And stdColLen = cmpColLen Then

                Cells(i + 1, 14).Interior.Color = RGB(255, 100, 100)

                Cells(i + 1, 14) = "직급 상이함"

                i = i + 1

            ElseIf stdColType = cmpColType And stdColLen <> cmpColLen Then

                Cells(i + 1, 15).Interior.Color = RGB(255, 100, 100)

                Cells(i + 1, 15) = "이름 상이함"

                i = i + 1

            ElseIf stdColType <> cmpColType And stdColLen <> cmpColLen Then

                Cells(i + 1, 14).Interior.Color = RGB(255, 100, 100)

                Cells(i + 1, 14) = "직급 상이함"

                Cells(i + 1, 15).Interior.Color = RGB(255, 100, 100)

                Cells(i + 1, 15) = "이름 상이함"

                i = i + 1

            End If

        '이름이 다르면 그냥 넘어감

        Else

            If sameRowCnt = 1 Then

            '    Selection.EntireRow.Delete

                Cells(i, 2).Interior.Color = RGB(100, 255, 100)

                Cells(i, 14) = "적합"

'                Cells(i + 1, 15) = "이름 상이함"

            End If

                i = i + 1

            sameRowCnt = 1

        End If

        colCnt = Cells(2, 2)

    Loop

    

 

End Sub


'정렬하는 부분입니다.

Sub setSort()

'

' setSort 매크로

'

    '갯수를 센다

    Range("B5").Select

    ActiveCell.FormulaR1C1 = "=COUNTA(R[2]C:R[94]C)"



    Cells(8, 1) = 1

    Cells(9, 1) = 2

    Range("A8:A9").Select

    Selection.AutoFill Destination:=Range("A8:A81")

    Cells(8, 1).Select


    '정렬 하기

    Range("A6:M6").Select

            

    

    afCheck = Selection.AutoFilter


    If afCheck = True Then

    Else

        ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range _

            ("B6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

            xlSortNormal

        With ActiveWorkbook.Worksheets(1).AutoFilter.Sort

            .Header = xlYes

            .MatchCase = False

            .Orientation = xlTopToBottom

            .SortMethod = xlPinYin

            .Apply

        End With

    End If

End Sub