Página 1 de 1

Escrever em colunas sem deixar celulas vazias

Enviado: 24 Nov 2018 às 23:44
por Domingsp
Boa noite. Tenho uma pasta na qual analiso alguns codigos. Na coluna C estão os codigos compostos por numeros e letras.
Na coluna F estao alguns numeros. Uma macro primeiro extrai a parte numerica da ponta esquerda dos codigos, depois compara essa parte numerica com os numeros na coluna F e a seguir precisa distribuir os codigos correspondentes nas colunas de J a N.
Observe que a ordem dos numeros nas colunas de J a N é a mesma ordem da coluna F. Então quando o codigo estiver na linha 2 da coluna F, deve colocar os resultados na coluna J(10) e assim por diante.
O problema é que deveria começar a escrever a partir da linha 2 de cada coluna. Mas está surgindo um grande espaço vazio indesejavel nas colunas. Isso porque para cada coluna deve ser usada uma letra diferente como indice na Cells. Mas como fazer a macro modificar as letras dos indices para cada numero de F?
Tentei colocando uma sequencia de letras na coluna G e a variavel Lin assumiria a letra correspondente ao numero daquela linha, mas o Cells não aceita. Não sei se objeto Range serve pra esse caso.
Na aba Resultado Desejado esta os resultados como devem ser.
Se puderem dar uma olhada, desde já estou grato.
CODIGOS.xlsm

Re: Escrever em colunas sem deixar celulas vazias

Enviado: 25 Nov 2018 às 00:03
por JCabral
Veja se é isso que pretende
Código: Selecionar todos
Sub Codigos()
    Sheets("Plan1").Activate
    Sheets("Plan1").Range("J2:N30").ClearContents    ' Adaptar ao Range necessário
    Dim m, n, UlinC, UlinF  As Integer
    UlinC = Cells(Rows.Count, 3).End(xlUp).Row
    UlinF = Cells(Rows.Count, 6).End(xlUp).Row
      For m = 2 To UlinC
            codigo1 = Cells(m, 3)
               num = (Left(codigo1, 1) & Mid(codigo1, 2, 1)) * 1
            For n = 2 To UlinF
               colF = Cells(n, 6)
                  'Lin = Cells(n, 7)
                  If num = colF Then
                     Linha = Cells(Rows.Count, n + 8).End(xlUp).Row
                     Cells(Linha + 1, n + 8) = codigo1
                  End If
            Next n
      Next m
End Sub



Escrever em colunas sem deixar celulas vazias

Enviado: 25 Nov 2018 às 01:36
por Domingsp
Funcionou. Obrigado!