none
Macro de Excel Avançada RRS feed

  • Pergunta

  • Amigos,

    Eu preciso criar uma macro para agilizar o trabalho aqui da empresa.
    Só que eu achei complicado de fazer, verifiquem se podem me ajudar!

    Preciso que a macro adicione na coluna D o conteúdos dos das colunas
    B e C, em suas respectivas linhas:

         B                C              D
    1   bala           boa          bala boa

    A macro precisa ir varrendo linha a linha até quando não tiver nenhum
    dado em B e C.

    A pessoa vai abrir o documento, procurar a macro e executar nele. Isso
    vai poupar um trabalho enorme, já que o emissor do documento não tem
    condições de adaptar para nós.

    Alguem consegue me ajudar nisso?
    Bernardes
    terça-feira, 17 de março de 2009 01:19

Respostas

  • Boa tarde Bernardes,

    referente a Macros eu não achei nada por enquanto, porém via função do Excel,
    vc pode utilizar a CONCATENAR que junta o texto das celulas.

    Na célula D1 digite a função abaixo como está.
    =CONCATENAR(B1;" ";C1)

    Com isso vai deixar o texto das duas células em uma única célula com espaço.

    Espero ter ajudado,

    Danilo Moreira
    • Sugerido como Resposta Rayfcrols sexta-feira, 20 de agosto de 2010 18:24
    • Marcado como Resposta Richard Juhasz quinta-feira, 23 de dezembro de 2010 13:03
    quarta-feira, 18 de março de 2009 17:08
  • Para quem quiser uma macro pode usar esta que eu adaptei pra concatenar intervalos


    Este primeiro codigo é em uma unica linha:

    Function CONCATENARSEQUENCIA(Intervalo As Range)
    Application.Volatile
    For Each Célula In Intervalo
    If Not IsEmpty(Célula) Then CONCATENARSEQUENCIA = CONCATENARSEQUENCIA & " " & Célula
    Next Célula
    CONCATENARSEQUENCIA = LTrim(CONCATENARSEQUENCIA)
    End Function

     

     

    Já este faz uma quebra de linha apos cada celula:


    Function CONCATENARSEQUENCIATAB(Intervalo As Range)
    Application.Volatile
    For Each Célula In Intervalo
    If Not IsEmpty(Célula) Then CONCATENARSEQUENCIATAB = CONCATENARSEQUENCIATAB & Célula & Chr(10)
    Next Célula
    CONCATENARSEQUENCIATAB = LTrim(CONCATENARSEQUENCIATAB)
    End Function

    • Sugerido como Resposta Rayfcrols sexta-feira, 20 de agosto de 2010 18:24
    • Marcado como Resposta Richard Juhasz quinta-feira, 23 de dezembro de 2010 13:03
    quinta-feira, 19 de agosto de 2010 21:47
  • Sub Concatenar()
      Const rOffset As Long = 2 'Esse valor representa a linha onde começam os dados
      Dim rLast As Long
      
      With ActiveSheet
        rLast = .Cells(.Rows.Count, "B").End(xlUp).Row
        .Range(.Cells(rOffset, "D"), .Cells(rLast, "D")).Formula = "=CONCATENATE(RC[-2],"" "",RC[-1])"
      End With
    End Sub
    • Marcado como Resposta Richard Juhasz quinta-feira, 23 de dezembro de 2010 13:03
    sexta-feira, 20 de agosto de 2010 23:06

Todas as Respostas

  • Boa tarde Bernardes,

    referente a Macros eu não achei nada por enquanto, porém via função do Excel,
    vc pode utilizar a CONCATENAR que junta o texto das celulas.

    Na célula D1 digite a função abaixo como está.
    =CONCATENAR(B1;" ";C1)

    Com isso vai deixar o texto das duas células em uma única célula com espaço.

    Espero ter ajudado,

    Danilo Moreira
    • Sugerido como Resposta Rayfcrols sexta-feira, 20 de agosto de 2010 18:24
    • Marcado como Resposta Richard Juhasz quinta-feira, 23 de dezembro de 2010 13:03
    quarta-feira, 18 de março de 2009 17:08
  • Para quem quiser uma macro pode usar esta que eu adaptei pra concatenar intervalos


    Este primeiro codigo é em uma unica linha:

    Function CONCATENARSEQUENCIA(Intervalo As Range)
    Application.Volatile
    For Each Célula In Intervalo
    If Not IsEmpty(Célula) Then CONCATENARSEQUENCIA = CONCATENARSEQUENCIA & " " & Célula
    Next Célula
    CONCATENARSEQUENCIA = LTrim(CONCATENARSEQUENCIA)
    End Function

     

     

    Já este faz uma quebra de linha apos cada celula:


    Function CONCATENARSEQUENCIATAB(Intervalo As Range)
    Application.Volatile
    For Each Célula In Intervalo
    If Not IsEmpty(Célula) Then CONCATENARSEQUENCIATAB = CONCATENARSEQUENCIATAB & Célula & Chr(10)
    Next Célula
    CONCATENARSEQUENCIATAB = LTrim(CONCATENARSEQUENCIATAB)
    End Function

    • Sugerido como Resposta Rayfcrols sexta-feira, 20 de agosto de 2010 18:24
    • Marcado como Resposta Richard Juhasz quinta-feira, 23 de dezembro de 2010 13:03
    quinta-feira, 19 de agosto de 2010 21:47
  • Sub Concatenar()
      Const rOffset As Long = 2 'Esse valor representa a linha onde começam os dados
      Dim rLast As Long
      
      With ActiveSheet
        rLast = .Cells(.Rows.Count, "B").End(xlUp).Row
        .Range(.Cells(rOffset, "D"), .Cells(rLast, "D")).Formula = "=CONCATENATE(RC[-2],"" "",RC[-1])"
      End With
    End Sub
    • Marcado como Resposta Richard Juhasz quinta-feira, 23 de dezembro de 2010 13:03
    sexta-feira, 20 de agosto de 2010 23:06