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

rdv

Determinar níveis de risco

12 mensagens neste tópico

Bom dia

Preciso de ajuda para elaborar uma planilha.

Tenho a seguinte planilha

Cod. Cliente  ..............Risco Cliente............Valor

Nivel de risco.............    A        ............

1            .............     B ............1,00

2            .............        c ............2,00

72            .............     B ............51,00

115          .............     A ............10,00

Nivel de risco.............    H        ............

5            .............   F ............1,00

4            .............   V ............2,00

79            .............   B ............51,00

10            .............   H ............10,00

a primeira linha é um cabeçalho.

Todos os clientes tem que estar no nível de risco acima dele.

Preciso de uma formula ou macro que faça isto automáticamente, pois tenho mais de 6.000 clientes e emito o relatório 2 a 3 vezes por mês.

Grato pela ajuda

Rodrigo.

EDIT: Titulo modificado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa mas eu não percebi...

Tens uma lista de clientes (em que à frente tem o tipo de risco que lhe está associado) acima e depois tens essa matrix?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pelo que percebi queres ordenar os clientes por risco de cliente?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na verdade, o risco do cliente 72 por exemplo esta como risco "B" e na verdade ele pertence ao risco "A". Da mesma forma, o cliente 4 esta como risco "V" e na verdade ele pertence ao risco "H".

Na planilha, primeiro eu tenho o nivel de risco correto, risco "a" (linha que não tem valor na frente), depois eu tenho os clientes que deveriam pertencer a este risco.

A formula ou macro deveria ser assim mais ou menos:

Enquanto o sistema não encontrar o proximo Nível de Risco, eu copio o Nível de Risco anterior e substituo o que esta na linha que tem o codigo do cliente.

Desculpem se não estou sendo muito claro, é que estou começando na area ainda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pelo que percebi é, se o cliente estiver debaixo do nivel A, o cliente passa a ter nível A?

vamos supor

X= 1ª linha onde começa

Y= ultima linha

C= coluna onde esteja escrito "Nível de risco"

B= coluna onde esteja o nível de risco

possível codigo

Risco="A"                                                                  'para começar com o 1º risco

                                                                                existente

For i= X to Y                                                              'percorre todas as linhas

if cells(i,C)="Nível de Risco" then Risco=cells(i,:P                'se na 1ª coluna estiver escrito Nível de Risco, guarda na variável Risco o nível

cells(i,:( = Risco                                                          'actualiza a coluna do Risco cliente, sempre pela ultimo nível guardado

next i

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

charlie, é justamente isso que eu quero, todos que estão debaixo do nível A devem ficar com nível A

Coloquei o codigo da maneira como disse...mas não deu certo

Risco = "A"

For i = 2 To 6

If Cells(i, A) = "Nivel de risco" Then Risco = Cells(i, :P

Cells(i, :( = Risco

Next i

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deu certo muito obrigado.

Este relatório um dia sai com 1000linhas, outro com 500, outro com 10.000....tem alguma forma de fazer ele entender que acabou e nao continuar preenchendo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se as colunas não tiverem nenhum espaço em branco, tens duas hipóteses

- dentro do ciclo for, acrescenta:

For i= 1 to 65000                            ' para no maximo percorrer todas as linhasd

              if cells="" then exit for      'se a célula estiver a vazio acaba o ciclo.

next i

ou

-alteras para

i=1

Do

    colocas aqui o que está dentro do ciclo for

    i=i+1

loop until cells(i,1)=""                              com isto ele vai repetindo até encontrar uma célula vazia.

ou então utiliza o topico:

http://www.portugal-a-programar.pt/index.php?showtopic=27585

que está lá definido como poder saber qual a ultima célula que está preenchida. logo podes fazer o ciclo variar entre 1 e essa ultima célula.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apenas uma pequena nota.

Um ciclo deve-se fazer da seguinte forma, uma vez que verificando se existe um espaço em branco não é fiável. Imagina que tens uma linha de separação, ou não tens um valor.

Uma das formas mais correctas é do seguinte modo:

Dim lastRow As Long
Dim x As Long

' Determina qual é a última linha com valores.
' -------------------------------------------------------
' Esta técnica posiciona o cursor na ultima linha da
' folha e salta para a primeira usada na coluna indicada.
' (é como colocar o cursor em A65536 e pressionar CTRL+Seta Cima)
lastRow = Cells(Cells.Rows.Count, "a").End(xlUp).Row

' Faz um ciclo nas linhas usadas
For x = 1 To lastRow
    Debug.Print Cells(x, "a").Value
Next x

Quando o tópico estiver resolvido indiquem também carregando em Topic Solved :)

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