Que código VBA devo usar para copiar dados da coluna A para F na planilha do Excel em outra planilha menos células em branco?

0

Eu quero copiar os dados de um relatório para uma nova folha com as células organizadas da maneira que eu quiser (infelizmente o relatório original não pode ser formatado!).

Eu tenho a formatação desativada, mas está criando linhas nas quais os dados têm 0.

Eu quero que o código do VBA copie as células das Colunas A: F para outra planilha. Eu vi exemplos de como fazer colunas simples, mas sou muito novato para recriar o código para outras colunas (e eu quero que ele pareça bonito e legal!)

Sub copynoblanksA()
'
'

'
Dim sh1 As Worksheet, s2 As Worksheet, i As Long
Dim j As Long, N As Long, r1 As Range

    Set sh1 = Sheets("List1")
    Set sh2 = Sheets("Sheet4")

N = sh1.Cells(Rows.Count, "A").End(xlUp).Row
    j = 1

For i = 1 To N
        Set r1 = sh1.Cells(i, "A")
        If r1.Value <> "" Then
            r1.Copy sh2.Cells(j, "A")
            j = j + 1
        End If
    Next i


End Sub
    
por lucian 24.08.2017 / 10:02

2 respostas

0

Para a maioria desses problemas simples, essa é a melhor prática:

  • Vá para a guia Desenvolvedor e clique em "macro de registro" (dê um nome à macro)
  • Selecione a coluna que você deseja copiar, copie para a guia que você deseja copiar
  • Vá até a guia Desenvolvedor e clique em "parar a gravação"
  • Vá para o editor, examine o script, insira-o em seu código e, eventualmente, adapte-o às suas variáveis.

para colar as células, mas não as vazias, você pode usar o código:

Range("A1:A20").SpecialCells(xlCellTypeConstants).Copy Destination:=Sheets("newsheet").Range("A1")
    
por 24.08.2017 / 12:38
0

Agora, uma solução não VBA:

= IFERROR (ÍNDICE ($ A $ 1: $ A $ 8, PEQUENO (SE ($ B $ 1: $ B $ 8="0", LINHA ($ B $ 1: B $ 8), 999999), LINHA (A1) )), "")

O primeiro Índice (A1: A8) se o intervalo de dados que você deseja mover. O B1: B8 na gama Se é o seu critério. (Aka a coluna que você quer ser 0). O comando ROW precisa ser 1: N, onde N é quantas linhas você tem no total. O último ROW precisa estar onde seus dados estão e precisa ser alterado conforme é arrastado para baixo. Esta é uma fórmula de matriz, então você precisa pressionar ctr + shift + enter

    
por 24.08.2017 / 17:20