locked
listar dados em uma coluna RRS feed

  • Pergunta

  • Olá gostaria de uma ajuda com o seguinte problema:

    Possuo uma matriz de dados com n linhas e colunas gostaria de extrair todos os valores em uma unica coluna, por exemplo:

     

     

    MATIRZ   SOLUÇÃO
    1   3   1
      5     3
    4 6     5
    8   10   4
      21     6
    12       8
    7   9   10
            21
            12
            7
            9

     

    Assim, quando selecionar a matriz a macro devolve a "solução" (todos os dados, um embaixo do outro) em uma unica célula!

     

    Obs: pode ser feito na mesma planilha

    Obs: entre o valor 1 e 3 da matriz existe uma célula em branco! isto repete-se por toda matriz!

     

    Grato!!

    sexta-feira, 23 de abril de 2010 21:09

Respostas

  • Boa noite, modifiquei o código de função para macro.

    Veja se está de acordo agora:

     

     

    Sub LinearizarMatriz()
    
    Dim rgMatriz    As Range
    
    Dim rgDestino   As Range
    
    Dim Célula      As Range
    
    Dim k           As Integer
    
    
    
    Set rgMatriz = Application.InputBox(Prompt:="Defina o intervalo que será linearizado", Type:=8)
    
    Set rgDestino = Application.InputBox(Prompt:="Defina o ponto de início da linearização", Type:=8)
    
    
    
    k = 0
    
    For Each Célula In rgMatriz
    
        If Célula <> "" Then rgDestino.Offset(k, 0) = Célula: k = k + 1
    
    Next Célula
    
    
    
    End Sub

     


    [ ]s


    Adilson Soledade - MOS http://adilsonsoledade.blogspot.com/
    • Sugerido como Resposta adilsonsoledade segunda-feira, 26 de abril de 2010 01:32
    • Marcado como Resposta Jnando84 segunda-feira, 26 de abril de 2010 02:53
    segunda-feira, 26 de abril de 2010 01:32

Todas as Respostas

  • Experimente esta função

    Function LinearizarMatriz(Matriz As Range)

    For Each Célula In Matriz

        If Célula <> "" Then LinearizarMatriz = LinearizarMatriz & Célula & vbLf

    Next Célula

    End Function

    OBS: A célula que receber a função deverá estar formatada para permitir a quebra de linha.

     [ ]s


    Adilson Soledade - MOS http://adilsonsoledade.blogspot.com/
    sábado, 24 de abril de 2010 02:14
  • Adilson, quase isso, mas queria que o resultado dos valores ficasse em uma unica coluna mas em varias linhas, pois vou ter de aplicar isso em uma matriz com mais de 4000 valores, ou seja terei uma unica coluna com 4000 linhas!

    Desta forma, ficaria tudo em uma unica célula, sendo quase impossível a visualização

    Sera que existe uma maneira de fazer para que o resultado fique cada valor em uma célula, mas na mesma coluna!?

     Por exemplo, a solução seria na coluna "D", então:

    D1 = 1

    D2 = 3

    D3 = 5

    D4 = 4... e assim por diante

    grato

    sábado, 24 de abril de 2010 15:19
  • Boa noite, modifiquei o código de função para macro.

    Veja se está de acordo agora:

     

     

    Sub LinearizarMatriz()
    
    Dim rgMatriz    As Range
    
    Dim rgDestino   As Range
    
    Dim Célula      As Range
    
    Dim k           As Integer
    
    
    
    Set rgMatriz = Application.InputBox(Prompt:="Defina o intervalo que será linearizado", Type:=8)
    
    Set rgDestino = Application.InputBox(Prompt:="Defina o ponto de início da linearização", Type:=8)
    
    
    
    k = 0
    
    For Each Célula In rgMatriz
    
        If Célula <> "" Then rgDestino.Offset(k, 0) = Célula: k = k + 1
    
    Next Célula
    
    
    
    End Sub

     


    [ ]s


    Adilson Soledade - MOS http://adilsonsoledade.blogspot.com/
    • Sugerido como Resposta adilsonsoledade segunda-feira, 26 de abril de 2010 01:32
    • Marcado como Resposta Jnando84 segunda-feira, 26 de abril de 2010 02:53
    segunda-feira, 26 de abril de 2010 01:32
  • é isso mesmo adilson!!

    parabéns!! você é mestre nisso, ja não é a primeira vez q me ajuda!! parabéns mesmo

    você da aula de VBA?!?!?!?!?

    segunda-feira, 26 de abril de 2010 02:54
  • Adilson, to precisando de uma força.

     

    Tenho uma planilha de controle de ingressos, com uma pequena base de dados.

    Faço a busca, e dá certo, mas eu gostaria de uma configuração em que os dados que ja foram achados uma vez, nao fossem encontrados novamente, que reportasse uma mensagem, tipo: Ingresso já utilizado por:______________

     

    aguardo

     

    Abraços

    terça-feira, 15 de fevereiro de 2011 19:49