Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Avatar do usuário
Por JCabral
Avatar
#38263
Boa noite

Tenho uma planilha com vários dados, pex. da coluna A à coluna L e gostaria de saber se é possível e em caso afirmativo como, fazer um SORT apenas das colunas A, C:D e L, sendo que a Key é a coluna L?

Obrigado
Jorge Cabral
Por osvaldomp
#38265
1. copie/recorte as colunas de interesse e cole-as lado a lado em uma área não ocupada da planilha
2. faça a classificação
3. retorne as colunas classificadas para as posições de origem

Se essa for uma operação repetitiva você pode gravar uma macro.
Avatar do usuário
Por JCabral
Avatar
#38266
Obrigado Osvaldo

Pela sua resposta já vi que não é possível fazer a ordenação diretamente.

Esta minha duvida vem no seguimento do "Resumo de Afetações" que você resolveu brilhantemente para mim, o único problema que ficou prende-se com as TAREFAS já que elas estão ordenadas por uma data e gostaria que assim continuassem, é possível fazer isso no seu código?
Obrigado
Jorge Cabral
Por osvaldomp
#38269
Cabral, na planilha DF do arquivo que você disponibilizou no outro tópico não há datas.
Então é preciso que você disponibilize um arquivo com as datas na planilha, informe onde você deseja manter a ordenação e mostre o resultado desejado, tal como você mostrou no outro, que facilitou muito a elaboração do código.
Avatar do usuário
Por JCabral
Avatar
#38272
Caro Osvaldo

Anexo planilha do outro tópico com a introdução das datas, "Data Inicio" e "Data Fim", que são as datas de inicio e fim de cada tarefa para depois traçar o Gantt para cada uma.

Como pretendo que o Gantt apareça em escadinha a ordenação das tarefas tem que ser pela data de inicio - da mais cedo para a mais tarde.

Em "OrdemDF" está o Output que pretendo, espero não me ter enganado em nada desta vez.

Nota: A coluna "Nº Tarefas" já fui eu que acrescentei no seu código;

Obrigado
Jorge Cabral
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#38277
Olá, Cabral.
Veja se atende.
Fiz as alterações para inserir as datas e para ordenar cada NomeX separadamente, critério a data de início.
Primeiro o código insere os dados referentes a um Nome, ordena os dados daquele nome e por último insere o Nome, a soma dos percentuais e a quantidade de tarefas. And so on.

altere esta linha
ws.Range("A9", ws.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).ClearContents

e altere as linhas abaixo
Código: Selecionar todos
...
...
'##############################################################################################
    For Each c In .Range("T1", .Cells(Rows.Count, 20).End(xlUp))
     x = 0
     'ws.Cells(Rows.Count, 1).End(xlUp)(2, 2) = c.Value ~~~> passei esta linha para baixo
      For i = 5 To 14 Step 3
       Set k = .Range(.Cells(13, i), .Cells(LR, i)).Find(c.Value, lookat:=xlWhole)
        If Not k Is Nothing Then
          kAd = k.Address
          Do
           ws.Cells(Rows.Count, 1).End(xlUp).Cells(2, 1) = .Cells(k.Row, 1)
           ws.Cells(Rows.Count, 3).End(xlUp).Cells(2, 1) = .Cells(k.Row, 2)
           ws.Cells(Rows.Count, 4).End(xlUp).Cells(2, 1) = Format(k.Offset(, 1).Value, "0%")
           ws.Cells(Rows.Count, 7).End(xlUp).Cells(2, 1) = .Cells(k.Row, 17)
           ws.Cells(Rows.Count, 8).End(xlUp).Cells(2, 1) = .Cells(k.Row, 18)
           Set k = .Range(.Cells(13, i), .Cells(LR, i)).FindNext(k)
           x = x + 1
          Loop While Not k Is Nothing And k.Address <> kAd
        End If
      Next i
      
     'ordena o intervalo correspondente ao NomeX
     ws.Cells(Rows.Count, 1).End(xlUp).Offset(-x + 1).Resize(x, 8).Sort _
      Key1:=ws.Cells(Rows.Count, 7).End(xlUp).Offset(-x + 1), Order1:=xlAscending, Header:=xlNo

     ws.Cells(Rows.Count, 4).End(xlUp)(1, 2) = _
      Format(Application.Sum(ws.Cells(Rows.Count, 4).End(xlUp).Offset(-x + 1).Resize(x)), "0%")
     ws.Cells(Rows.Count, 5).End(xlUp)(-x + 2, 2) = x
     ws.Cells(Rows.Count, 1).End(xlUp)(-x + 2, 2) = c.Value
    Next c
'###############################################################################################
...
...

long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord