Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

fana81

Mover dados da última coluna de cada linha - Excel

Mensagens Recomendadas

fana81    0
fana81

Olá a todos.

Gostaria de obter ajuda, se for possível.

Tenho uma lista em Excel com cerca de 300 linhas. Os dados foram importados de um PDF.

Cada linha tem o nome completo da pessoa e à frente a classificação do teste. Isto tudo numa coluna apenas.

Como o objetivo é ordenar pelo resultado obtido no teste fiz o seguinte:

Separei os dados de cada linha, que estavam apenas numa coluna, em várias colunas cada uma delas contendo um nome.

Acontece que como os nomes são de tamanhos diferentes, o valor da classificação aparece em colunas diferentes em cada linha.

Pergunto qual a melhor solução para ter o nome numa só coluna (por linha) e o resultado do teste na segunda coluna isto em cada uma das 300 linhas por forma a que depois possa ordenar.

Espero ter-me explicado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fana81    0
fana81

Boas CRLF.

Eu não tenho código nenhum. ~Eu não entendo nada de VBA.

O exemple é:

Ana Filipa Pimpão 13,4

Ana Rosmaninho faltou

Ana Joaquina da Silva de Jesus Pimpolha reprovado

São nomes fictícios.

Todos esses dados inicialmente estavam numa única coluna (cada linha).

O que fiz foi usar o "texto para colunas" para separar todos os dados. Assim, todos esses dados ficam em colunas separadas (em cada linha).

Contudo o último dado de cada linha (a nota, o faltou e o reprovado) é o que me interessa para depois poder ordenar.

Os nomes eu consigo consolidar depois usando a função &" "&.

Espero ter-me explicado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao    20
acao

boas

cria um botao na folha, e coloca lá o código que segue.

Option Explicit
Private Sub CommandButton1_Click()
On Error Resume Next
Dim lastCellRow As Long
Dim lastCellColumn As Long
Dim vRangeTrabalhoRowCol As Range
' ultima linha com dados
lastCellRow = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
' ultima coluna com dados
lastCellColumn = ActiveSheet.Cells.SpecialCells(xlLastCell).Column
' range da primeira celula e celula da ultima coluna com dados + uma coluna
Set vRangeTrabalhoRowCol = Range("A1", Cells(lastCellRow, lastCellColumn + 1))
Dim vRangeRows As Range
Dim vNumCol As Long
'for each ao range para percorrer todas as linhas
For Each vRangeRows In vRangeTrabalhoRowCol.Rows
	'ciclo for a percorrer as celulas da ultima coluna com dados para a primeira
	For vNumCol = lastCellColumn To 1 Step -1
			' quando a celula estiver preenchida grava na ultima coluna do range (vRangeRows) o valor encontrado e sai do for.
			If (vRangeRows.Cells(1, vNumCol).Value <> "") Then
					vRangeRows.Cells(1, lastCellColumn + 1) = vRangeRows.Cells(1, vNumCol).Value
					Exit For
			End If
	Next
Next
End Sub

cumps

acao

Editado por acao

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.