locked
Macro pra copiar uma série de numero RRS feed

  • Pergunta

  • Uma macro que copie e substitua seletivamente (só quando tenho dados nas células), ou seja, copie A3 para L3, B3 para M3, C3 para N3, D3 para O3 e E3 para P3. Mantendo os demais dados das colunas L, M,N,O e P. Então sempre que houver dados nas colunas ABCDE eles podem ser copiados em substituição aos existentes em LMNOP.

    Obrigado pela Ajuda César.

     

      A B C D E   L M N O P
    1             2 4 6 10 17
    2             6 91 9 13 26
    3 56 35 48 32 25   4 22 14 18 22
    4             6 149 18 22 27
    5             14 193 22 26 29
    ...             23 236 26 30 32
    250             30 280 30 34 34

    quarta-feira, 29 de dezembro de 2010 20:10

Respostas

  • Tente isso:

     

    Sub LP_ATUAL()
    
      For AO = 4 To 250
        A = Range("a" & AO).Value
        If A <> "0" Then
          Range("A" & AO & ":" & "E" & AO).Select
          Selection.Copy
          Range("L" & AO).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False
        Range("A1").Select
      Exit For
        End If
       Next AO
     End Sub

     

    Como sou garoto novo no VBA, imagino que da linha 24 até a 250 devem estar seus somase(...

    Essa macro pega o valor maior que zero na Coluna A e seleciona os dados de A até E e cola como valores nas colunas L até P da mesma linha e retorna o cursor até A1.

    Teste e me fale.

    Com absoluta certeza nossos amigos conhecedores de VBA tem uma macro mais eficiente. Mas essa funcionou no meu.

     

    Abs,

     

     

     

    quinta-feira, 30 de dezembro de 2010 00:28

Todas as Respostas

  • Não é difícil não.

     

    Pergunta1: há dados nas colunas F/G/H/I/J/K??

    Pergunta2: Somente uma fileira (linha) por vez ou pode ter mais de uma?

    Pergunta3 : Há fórmulas (cálculos) nas colunas A/B/C/D/E ou os números são inseridos e o resto das células estão vazias?

    Tô vendo seu post...

     

    quarta-feira, 29 de dezembro de 2010 21:51
  • Mandrix

    Pergunta 1: Não (na real tem uma coluna) poderia ser ao inves de L/M/N/O/P      G/H/I/J/K

    Pergunta 2: sempre uma fileira só por vez

    Pergunta 3: sim tem em todas as células a formula =somase(.....)

    Já tenho uma macro que copia quando é um célula só, mas não sei como fazer para uma linha completa como exemplo. Eu Poderia repetir a macro, no entando teria que repetir em torno de 25 vezes a mesma rotina e estou procurando algo para simplificar.

    Para copiar uma célula a macro que uso é esta a seguir:

    Sub LP_ATUAL()

        Application.ScreenUpdating = False
        Sheets("LP").Select
        For AO = 4 To 250
            A = Range("O" & AO).Value
            If A <> "0" Then
                Range("AO" & AO).Select
                ActiveCell.FormulaR1C1 = A
            Else
            End If
        Next AO    
        Sheets("LP").Select

    quarta-feira, 29 de dezembro de 2010 22:26
  • Tente isso:

     

    Sub LP_ATUAL()
    
      For AO = 4 To 250
        A = Range("a" & AO).Value
        If A <> "0" Then
          Range("A" & AO & ":" & "E" & AO).Select
          Selection.Copy
          Range("L" & AO).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False
        Range("A1").Select
      Exit For
        End If
       Next AO
     End Sub

     

    Como sou garoto novo no VBA, imagino que da linha 24 até a 250 devem estar seus somase(...

    Essa macro pega o valor maior que zero na Coluna A e seleciona os dados de A até E e cola como valores nas colunas L até P da mesma linha e retorna o cursor até A1.

    Teste e me fale.

    Com absoluta certeza nossos amigos conhecedores de VBA tem uma macro mais eficiente. Mas essa funcionou no meu.

     

    Abs,

     

     

     

    quinta-feira, 30 de dezembro de 2010 00:28
  • Só adaptei a minha situação real e funcionou muito bem. Era o que eu precisava.

    Grato feliz ano 2011

    quinta-feira, 30 de dezembro de 2010 09:37