Copie / mova valores que correspondam a um padrão para outra coluna

1

Eu tenho uma planilha onde precisamos mover todos os valores que correspondem a um padrão para colunas diferentes.

Por exemplo, temos uma coluna B com valores que são uma ou mais letras seguidas por um ou mais dígitos, como k123 , k4567 , g345 , g65535 , HJ4567 , KL4553 , etc. Preciso colocar todos os valores começando com k na coluna C , todos os valores começando com g na coluna D e assim por diante.

Existe alguma macro para fazer isso?

    
por william 16.10.2012 / 15:47

1 resposta

1

Este código criará uma macro para mover seus dados com base na letra que precede o número em cada célula da coluna B . Cole isto no VBA Explorer ( Alt + F11 ) e aparecerá na janela de macros como MoveData .

Você verá o código em cada célula para ver qual é o caractere mais à esquerda. Se for um k , o conteúdo da célula é copiado para o lugar da célula 1 à direita (coluna C), então limpa a célula original. Se o caractere for um g , ele será copiado para a célula 2 locais à direita (coluna D) e, em seguida, limpará a célula original.

Sub MoveData()
Dim myrange, cell As Range
Set myrange = ActiveSheet.Range("B:B", Range("B:B").End(xlDown))
For Each cell In myrange
    If Left(cell.Value, 1) = "k" Then
        cell.Offset(0, 1).Value = cell.Value
        cell.ClearContents
    ElseIf Left(cell.Value, 1) = "g" Then
        cell.Offset(0, 2).Value = cell.Value
        cell.ClearContents
    End If
Next cell

    'Delete empty cells in column C
    Columns("C:C").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlUp

    'Delete empty cells in column D
    Columns("D:D").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("A1").Select
End Sub

Você pode alterar os valores que procura modificando as "k" ou "g" nas declarações IF .

Aviso: Use por sua conta e risco. Faça uma cópia de backup do seu trabalho. Não nos responsabilizamos por quaisquer dados perdidos.

    
por 16.10.2012 / 17:47