• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jtiagodias

Percorrer valores duma coluna e parar no 1º que encontrar

6 mensagens neste tópico

Ora viva...

Aqui vai mais uma dúvida que me está a dar cabo da cabeça...

Jpaulino, esta surge na sequência da outra dúvida que me sugeriste que eu fizesse manualmente. O problema que tinha já o resolvi mas agora queria fazer esta macro porque, por vezes, aparece-me este problema e assim conseguia evitar imenso trabalho... (http://www.portugal-a-programar.pt/index.php?showtopic=24605)

O que pretendia mesmo?

Pretendia fazer um ciclo que percorresse uma coluna em Excel. Contudo, queria que quando o critério se verificasse, o ciclo parasse, ou seja:

      A        B

1    11

2    11

3

4    16

5

6      3

7

8      4

9

10

Fiz um ciclo for i=0 to 10 e depois

                      If range("a1").offset(i;0).value <> "" then

                                        range("b1").value=range("a1").offset(i;0).value

                      end if

                  next i

O que é que acontece?

Na célula B1 aparece sempre o último valor da lista, ou seja, a macro percorre toda a lista e devolve o último valor que verifica a condição...

O que eu queria era algo do género:

Percorre a lista da coluna A e se verificar a condição "guarda o valor". Depois continua a correr a lista e guarda o 2º valor etc...

Para depois, ao lado, ir colocando os valores ordenados...

Acho que se consegue pereber... Alguma dúvida apitem... Caso pretendam ver o ficheiro que tenho não o conseguirei colocar online antes de sexta porque o meu pc teve um problema e não o vou resolver antes do fim da semana.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não entendi bem o que queres!

Não é ordenar como no outro exemplo ?

Vê se é isto:

Dim lastRow As Long

' Verifica qual a ultima linha preenchida
lastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row

' Copia para a linha do lado
Range("A1:A" & lastRow).Copy
ActiveSheet.Paste [b1]

' Ordena a nova coluna
Range("B1:B" & lastRow).Sort Key1:=Columns("B")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim à primeira vista parece-me correcto mas eu quero percorrer toda a coluna certo???

Então ele vai percorrendo e encontra uma célula a branco, deve copiar o último valor mas depois deve continuar a percorrer a lista....

Se eu lhe colocar um for ele copia todos os valores para  a coluna ao lado ou pega apenas no último ficheiro???

No fim da semana tento e depois digo algo....

obrigado pela dica....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sorry, nunca mais vi esta questão.

Ainda precisas de ajuda ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora