rdv Posted June 4, 2009 at 02:57 PM Report #269899 Posted June 4, 2009 at 02:57 PM 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
jtiagodias Posted June 4, 2009 at 03:07 PM Report #269902 Posted June 4, 2009 at 03:07 PM 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?
charlie69 Posted June 4, 2009 at 04:15 PM Report #269924 Posted June 4, 2009 at 04:15 PM pelo que percebi queres ordenar os clientes por risco de cliente?
rdv Posted June 4, 2009 at 04:39 PM Author Report #269928 Posted June 4, 2009 at 04:39 PM 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.
charlie69 Posted June 4, 2009 at 05:17 PM Report #269939 Posted June 4, 2009 at 05:17 PM 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,😛 '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
rdv Posted June 4, 2009 at 07:08 PM Author Report #269961 Posted June 4, 2009 at 07:08 PM 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, 😛 Cells(i, 😞 = Risco Next i
charlie69 Posted June 5, 2009 at 09:19 AM Report #270088 Posted June 5, 2009 at 09:19 AM http://www.easy-share.com/1905547192/nivel%20de%20risco.xls vai aqui e vê o codigo que fiz, é muito simples. Peço desculpa se não podia disponibilizar link aqui, se isso for verdade, peço aos admins que eliminem o link. obrigado
rdv Posted June 5, 2009 at 12:42 PM Author Report #270145 Posted June 5, 2009 at 12:42 PM 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?
charlie69 Posted June 5, 2009 at 01:15 PM Report #270155 Posted June 5, 2009 at 01:15 PM 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.
jtiagodias Posted June 5, 2009 at 01:58 PM Report #270175 Posted June 5, 2009 at 01:58 PM http://www.easy-share.com/1905547192/nivel%20de%20risco.xls vai aqui e vê o codigo que fiz, é muito simples. Peço desculpa se não podia disponibilizar link aqui, se isso for verdade, peço aos admins que eliminem o link. obrigado Simples e excelente código. Obrigado
rdv Posted June 5, 2009 at 05:37 PM Author Report #270273 Posted June 5, 2009 at 05:37 PM Funcionou bacana 🙂 . Muito Obrigado
jpaulino Posted June 5, 2009 at 09:11 PM Report #270302 Posted June 5, 2009 at 09:11 PM 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 🙂
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now