Jump to content
NCS_One

Excel ordenar coluna.

Recommended Posts

NCS_One

Boas.

É possível ordenar colunas com linhas em branco no meio?

Isto é:

---

3

---

---

1

---

---

2

---

Fazer o ordenar e obter:

---

1

---

---

2

---

---

3

---

E não o que me está a acontecer:

---

1

---

2

---

3

---

---

---

Obrigado.


Se a vida te voltar as costas aproveita e apalpa-lhe o cu.

Share this post


Link to post
Share on other sites
thoga31

Penso que isso só seja possível recorrendo a VBA, com códigos os quais não tenho conhecimento.

Segundo sei, o Excel não faz isso por si mesmo sem uma "mãozinha" 🤔

Cumpz. :D


Knowledge is free!

Share this post


Link to post
Share on other sites
thoga31

É possível e fácil recorrendo a uma Macro.

Mas pergunto: a cadência "n* branco n* branco " é constante?

Partindo do princípio que sim, como funcionaria essa Macro? Agora fiquei curioso :thumbsup:


Knowledge is free!

Share this post


Link to post
Share on other sites
NCS_One

Boas.

Vou explicar melhor o problema:

Consiste numa lista de nomes, pode estar um nome sozinho rodeado de brancos ou dois nomes juntos rodeados de branco.

Como neste exemplo:

----------

Manuel

----------

----------

José

----------

Paula

----------

----------

António

----------

----------

Bruno

----------

Nadia

----------

Gostava que depois de ordenar ficasse assim:

----------

António

----------

----------

Bruno

----------

Nadia

----------

----------

José

----------

Paula

----------

----------

Manuel

----------

Se fosse possível escolher, no caso de dois nomes juntos, por qual dos nomes ordenar melhor ainda. Mas também não estou a pedir o trabalho todo feito, também não me importo claro :thumbsup: , dêem-me umas ideias e exemplos de código que tento fazer o resto.

Obrigado.


Se a vida te voltar as costas aproveita e apalpa-lhe o cu.

Share this post


Link to post
Share on other sites
Tiago Salgado

Assim mais próximo, é seleccionares a coluna toda, aplicares um filtro e removeres a seleccção das linhas em branco.

Depois ordenas, e voltas a incluir as linhas em branco.

Será que é o que pretendes?

Share this post


Link to post
Share on other sites
GESPO
Sub Ordenacao()
'O problema é fácil de resolver com uma Macro.
'Se não sabes eu posso ajudar.
' Aqui vai
' Macro de Faro Barros em 20110215
CtlNome% = 0

Range("C11").Select
' onde C11 seria a célula onde começa tudo
' e a tua área de trabalho por exemplo de "C11:F25"

For l% = 1 To 20
ActiveCell.Offset(0, 0).Range("A1").Select

x$ = Trim(ActiveCell.Value)

If x$ = "" Then
  CtlNome% = 0
Else
        If CtlNome% = 1 Then
               
                 ActiveCell.Offset(-1, 0).Range("A1").Select
               '
                    y$ = ActiveCell.Value
                            If x$ > y$ Then
                                     ActiveCell.Value = y$ + "##" + x$
                                       ActiveCell.Offset(1, 0).Range("A1").Select
                                     ActiveCell.Value = y$ + "##" + x$
                             Else
                                     ActiveCell.Value = x$ + "##" + y$
                                       ActiveCell.Offset(1, 0).Range("A1").Select
                                     ActiveCell.Value = x$ + "##" + y$
                            End If
                           
          End If
CtlNome% = 1
End If

ActiveCell.Offset(1, 0).Range("A1").Select
Next l%
' e agora ordena zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   Range("C11:F25").Select
    Selection.Sort Key1:=Range("C11"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
' e em seguida desmembra e insere espaçozzzzzzzzzzz
Range("C11").Select

For l% = 1 To 20
ActiveCell.Offset(0, 0).Range("A1").Select

x$ = Trim(ActiveCell.Value)

If x$ = "" Then GoTo Fim

                s% = InStr(x$, "##")
            If s% > 0 Then
                If CtlNome% = 0 Then
                     ActiveCell.Value = Mid(x$, 1, s% - 1)
                      CtlNome% = 1
                
                Else
                     ActiveCell.Value = Mid(x$, s% + 2)
                     CtlNome% = 0
                End If
             
            End If
ActiveCell.Offset(1, 0).Range("A1").Select

If CtlNome% = 0 Then
        Selection.EntireRow.Insert
ActiveCell.Offset(1, 0).Range("A1").Select
End If

Next l%



Fim:
End Sub

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.