태그 보관물: vba

vba

중복 셀 값 병합 / 삭제 물론 필터가있는

동일한 값을 가진 셀을 병합하는 데 문제가 있습니다. 열과 행의 양이 다른 Excel 파일을 받으므로 엄격한 행이나 열에 설정된 매크로를 사용할 수 없습니다. 내가 가진 것은 이것입니다병합하기 전에 뛰어나다

첫 번째 행은 물론 필터가있는 헤더 행입니다. 내가 갖고 싶은 것은 이렇게

그래서 나는 여전히 모든 열을 기준으로 물건을 정렬 할 수 있습니다 (멋진 자전거에는 여전히 4 행이 표시됩니다). 매크로 또는 스크립트가있을 수 있으며 시트 크기 (때로는 수천 행)에서 응답하지 않습니다. 모든 시트에 대해 수동으로 변경하고 설정해야합니까?

도움을 주셔서 감사합니다.



답변

표시 문제인 경우 조건부 서식 만 사용할 수 있습니다.

규칙은 다음과 같습니다.

=$C1=$C2

그리고 형식은 다음 Number Format 의 사용자 정의 형식에 있습니다. ;;;

그리고 어떤 열을 정렬했는지에 관계없이 태그 라인은 예제와 같이 위에 표시된 빈 행에도 적용됩니다.

조건부 서식의 정렬 및 적용은 원하는 경우 매크로로 수행 할 수 있습니다.

그러나 tagline동일한 태그 라인을 가진 모든 자전거를 그룹화 하려면 마지막 으로 정렬 해야합니다.


답변

이 매크로는 작동합니다 :

Public Sub merger()
    Application.DisplayAlerts = False
    Dim wkb As Workbook
    Dim wks As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets("Sheet1")
    firstrow = 2
    lastcolumn = "Z"
    columnsortkey = "C"
    columnmerge = 3
    Columns("A:" & lastcolumn).Sort key1:=Range(columnsortkey & ":" & columnsortkey), Header:=xlYes
    theEnd = False
    thisrow = firstrow
    found = False
    Count = 0
    While theEnd = False
        firstCell = wks.Cells(thisrow, columnmerge)
        nextCell = wks.Cells(thisrow + 1, columnmerge)
        If firstCell = nextCell Then
            If found = False Then
                found = True
                mergerfirst = thisrow
                Count = Count + 1
            Else
                Count = Count + 1
            End If
        Else
            If found = True Then
                Range(Cells(mergerfirst, columnmerge), Cells(mergerfirst + Count, columnmerge)).Merge
                found = False
                Count = 0
            End If
        End If
        thisrow = thisrow + 1
        If firstCell = "" Then theEnd = True
    Wend
    Application.DisplayAlerts = True
End Sub

작동하게하려면 ALT+로 VBA / Macros를 연 F11다음 ThisWorkbook 에서 새 모듈을 삽입하고 코드를 붙여 넣어야합니다.


답변