none
Ordenar lista vba RRS feed

  • Pergunta

  • Bom dia!

    Ai galera, estou novamente aqui solicitando a ajuda de todos. A questão é a seguinte:

    Tenho uma planilha com vários produtos e repetidos, exemplo:

    tomate
    tomate
    tomate
    melão
    tomate
    melão
    ovos
    ovos
    tomate
    tomate
    melão
    tomate
    tomate
    tomate
    melão
    tomate
    melão

    o que eu faço manualmente é ordenar por nome, uso o tomate como base principal e ordeno o melão a cada 03 tomates, apos ordenar o
    melão com o tomate, eu ordeno os ovos a cada 07 tomates/melão, exemplo:

    Primeiro - Segundo - Terceiro passo
    tomate   tomate   tomate
    tomate   tomate   tomate
    tomate   tomate   tomate
    tomate   melão   melão
    melão   tomate   tomate
    melão   tomate   tomate
    melão   tomate   ovos
    ovos   melão   tomate
    ovos

    O número de ordenação da lista é váriável, por isso eu queria um código VBA que faça esta ordenação, sendo que eu definiria a
    quantidade a ser ordenada. Exemplo: minha lista de tomate tem 200 tomates, minha lista de melão tem 50 e minha lista de ovos tem 40.
    Vou querer ordenar o melão a cada 04 tomates e os ovos a cada 10 tomates/melões.

    Bem esta é minha solicitação de ajuda,

    Grato pelo apoio,

    quinta-feira, 14 de março de 2013 00:05

Todas as Respostas

  • E se o número de dos produtos não forem suficientes para fechar a conta? Sobrarão tomates no final, por exemplo?

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 14 de março de 2013 01:48
    Moderador
  • Sim, pode ficar vários tomates juntos no final sim. no meu exemplo os tomates não são problema e sim os demais problemas.

    Você tinha ate me enviado um codigo que fazia a conta e divisão dos item e copiava e colava os valores conforme a divisão, porém eu agora necessito de um código onde eu possa manipular o valor, não é necessário um imputbox, posso modificar direto no vba conforme minha necessidade. segue código anterior:

    Sub Exemplo()
        Dim lDivisor As Long
        Dim lRowsDivisor As Long
        Dim lRowsDividendo As Long
        Dim lPasso As Long
        Dim lDividendo As Long
        Dim wsDividendo As Worksheet 'Plan1
        Dim wsDivisor As Worksheet 'Plan2
        
        Set wsDividendo = ThisWorkbook.Sheets("Plan1")
        Set wsDivisor = ThisWorkbook.Sheets("Plan2")
        
        lRowsDividendo = wsDividendo.Cells(wsDividendo.Rows.Count, "A").End(xlUp).Row
        lRowsDivisor = wsDivisor.Cells(wsDivisor.Rows.Count, "A").End(xlUp).Row
        lPasso = lRowsDividendo / lRowsDivisor
        For lDivisor = lRowsDivisor To 1 Step -1
            wsDivisor.Rows(lDivisor).Copy
            wsDividendo.Rows(lRowsDividendo + 1).Insert
            lRowsDividendo = lRowsDividendo - lPasso
        Next lDivisor
        
    End Sub


    grato, 

    sexta-feira, 15 de março de 2013 12:25
  • Não consigo me lembrar desse código que escrevi. Poderia postar o link original?

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sábado, 16 de março de 2013 12:36
    Moderador