Compartilhar via

MACRO para transpor linhas em colunas.

Anônima
2016-05-07T22:23:28+00:00

Srs, boa noite. sou novo aqui mas gostaria de uma ajuda.

Tenho uma macro de extração cujo resultado é:

Resultado = Nome; Contrato; Parcelas

considerando que:

Nome = uma informação, sempre

Contrato = uma informação, sempre

Parcelas = pode ser uma ou várias

As informacoes que sao unicas, devem se repetir

Sendo assim, o resultado que vai para minha celula do excel é separado por ";".

posso usar a função texto para coluna, mas o resultado continua em linha e gostaria que o resultado fosse em tabela.

Algo assim:

NOME CONTRATO PARCELAS
JOAO 20514 10
JOAO 20514 11
PEDRO 12345 9
PEDRO 12345 10
PEDRO 12345 11

assim, considerando a quantidade de variaveis dentro de "parcelas" as demais informacoes se repetem.

Conseguem me ajudar?

Abs

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2016-05-08T00:51:40+00:00

Boa noite,

Não entendi o que a função eCNPJ retorna...

Mas acredito que não haja necessidade dela.

Veja como ficou o código

Sub ListarCNPJ()

Dim lngLinha    As Integer

Dim intCount    As Integer

Dim strLinha    As String

Dim arrVetor    As Variant

    lngLinha = 2

   'verifica se a coluna A contem cnpj para trazer o resultado da function na coluna B

    With Plan2

    While Plan2.Range("A" & lngLinha).Value <> ""

        'transfere o valor da coluna A para strLinha

        strLinha = .Range("A" & lngLinha).Value

        'Desmenbra os elementos de strLinha

        arrVetor = Split(strLinha, ";")

        For intCount = 3 To UBound(Vetor)

        'Forma novas cadeias de texto e transfere para coluna B

        .Range("B" & lngLinha).Value = Join(Array(arrVetor(0), arrVetor(1), arrVetor(2), arrVetor(intCount)), ";")

        Next intCount

        lngLinha = lngLinha + 1

    Wend

    End With

End Sub

[ ]s

Esta resposta foi útil?

3 pessoas acharam esta resposta útil.
0 comentários Sem comentários

2 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2016-05-08T00:17:37+00:00

    Adilson, obrigado pela resposta. eu estava trabalhando em uma planilha teste mas confesso que nao consegui adaptar.

    vou te passar o codigo inteiro, veja se me ajuda:

    Resultado da Function:

    e_CNPJ = cnpj;nome;situacao;atividadeprincipal;atividadesSecundarias

    no excel isso viraria por exemplo:

    12.345.678/0001-00 empresa A ativa fabricacao comercio

    aí eu tenho essa sub pra extrair para o excel


    Sub ListarCNPJ()

    Dim lngLinha    As Integer

        lngLinha = 2

       'verifica se a coluna A contem cnpj para trazer o resultado da function na coluna B

        While Plan2.Range("A" & lngLinha).Value <> ""

            Plan2.Range("B" & lngLinha).Value = e_CNPJ(Plan2.Range("A" & lngLinha).Value)

            lngLinha = lngLinha + 1

        Wend

    End Sub

    consegue me ajudar nesta adaptacao?

    meu objetivo é que o resultado seja assim:

    12.345.678/0001-00 empresa A ativa fabricacao
    12.345.678/0001-00 empresa A ativa comercio

    abs.

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2016-05-07T23:05:18+00:00

    Boa noite,

    Poderia dar mais detalhes sobre o seu código?

    Pelo que pude entender Resultado é um string... É isso mesmo?

    Se for isso, esse trecho de código deve ajudá-lo

    Resultado = "JOAO;20514;10;11"

    Vetor = Split(Resultado, ";")

    For i = 2 To UBound(Vetor)

    Resultado = Join(Array(Vetor(0), Vetor(1), Vetor(i)), ";")

    'Aqui o comando que você usa para transferir o valor para a planilha

    Next i

    Resumindo, criei um loop para transferir o valor de resultados dependendo no número de parcelas

    [ ]s

    Esta resposta foi útil?

    0 comentários Sem comentários