Mesclando / excluindo valores de célula duplicados

0

Eu tenho um problema ao mesclar células com os mesmos valores. Eu recebo arquivos Excel que variam em colunas e linhas, então não posso usar macros configuradas para uma quantidade rígida de linhas ou colunas. O que eu tenho é assim

Aprimeiralinhaé,naturalmente,linhadecabeçalhoquepossuifiltroneles.Oqueeuqueroterdeveserassim

Então, eu ainda posso classificar as coisas por todas as colunas (então as motos legais ainda me mostrarão 4 linhas) Existe uma macro ou um script que pode fazer isso e não obter resposta do tamanho da planilha (algumas milhares de linhas às vezes) E não precisará ser alterado manualmente e configurado para cada planilha?

Agradecemos antecipadamente por qualquer ajuda.

    
por SZCZERZO KŁY 08.09.2016 / 13:01

2 respostas

1

Se este é um problema de exibição, você pode simplesmente usar a formatação condicional.

A regra seria:

=$C1=$C2

e o formato estará em Number Format do formato personalizado de: ;;;

E, independentemente da coluna classificada, o slogan também se aplicaria às linhas em branco acima, assim como no seu exemplo.

Esta classificação e aplicação de formatação condicional pode ser feita em uma macro, se você quiser.

No entanto, você teria que classificar tagline por último para manter todas as bicicletas com o mesmo tagline agrupado.

    
por 08.09.2016 / 13:56
0

Esta macro deve funcionar:

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

Para fazer isso funcionar, você tem que abrir o VBA / Macros com ALT + F11 , então em ThisWorkbook insira um novo módulo e cole o código.

    
por 08.09.2016 / 13:47