none
Saltar linha RRS feed

  • Pergunta

  • A dúvida é. Estou fazendo uma divisão da Range("c2") (preço de custo) pela range("d2") (preço de venda) e colocando o resultado em ("e2") e a lista é grande. Não consigo fazer que ao terminar essa conta ele retorne para a Range("c3"), divida pela range("d3") e informe o resultado na range ("e3"), e tantas vezes quantas forem necessárias. 
    sábado, 19 de julho de 2014 19:02

Respostas

  • Nelson,

    vc não está sendo coerente com sua dúvida. No post anterior vc disse: "Esse comando funciona quando você sabe o número de linhas a executar, mas no caso eu não sei o número de linhas a executar". Pois bem, com o que te sugeri, vc descobre facilmente o número de linhas necessárias. Assim, basta fazer o laço até este número ou inserir uma fórmula no Excel. Segue um exemplo:

    Dim Plan As Worksheet
    Dim Cd As Long, Lfim As Long, i As Long
    
    Set Plan = Plan1
    
    Cd = 3   'Coluna desejada
    Lfim = Plan.Cells(Rows.Count, Cd).End(xlUp).Row
    
    For i = 2 To Lfim
        
        Plan.Cells(i, 6).Value = Plan.Cells(i, 3).Value / Plan.Cells(i, 4).Value
    Next i
    
    Range(Cells(2, 6), Cells(Lfim, 6)).NumberFormat = "0.00%"
    Ok?

    Filipe Magno

    • Marcado como Resposta Nelson Eduardo domingo, 20 de julho de 2014 21:48
    domingo, 20 de julho de 2014 21:17

Todas as Respostas

  • Nelson,

    use qualquer comando de laço condicional, vou te passe o laço For Next...

        Dim wks As Worksheet
        Set wks = ThisWorkbook.Sheets("Plan1")
        
        
        For x = 2 To 10
            
            wks.Cells(x, 5).Value = wks.Cells(x, 3).Value * wks.Cells(x, 4).Value
    
        Next x
    
    Se ajudei, não esqueça de Marcar Como Resposta!

    sábado, 19 de julho de 2014 19:19
  • Nelson,

    use qualquer comando de laço condicional, vou te passe o laço For Next...

        Dim wks As Worksheet
        Set wks = ThisWorkbook.Sheets("Plan1")
        
        
        For x = 2 To 10
            
            wks.Cells(x, 5).Value = wks.Cells(x, 3).Value * wks.Cells(x, 4).Value
    
        Next x
    Se ajudei, não esqueça de Marcar Como Resposta!

    Esse comando funciona quando você sabe o número de linhas a executar, mas no caso eu não sei o número de linhas a executar.


    domingo, 20 de julho de 2014 18:46
  • Nelson,

    a determinação da última linha do intervalo pode ser feita de várias formas, dependendo do formato dos seus dados. Uma forma bastante eficiente que funciona para intervalos que estejam contidos numa única coluna exclusiva para este intervalo é a seguinte:

    Cd = 1   'Coluna desejada
    Lfim = Plan1.Cells(Rows.Count, Cd).End(xlUp).Row

    Dessa forma te atende?


    Filipe Magno

    domingo, 20 de julho de 2014 19:02
  • Nelson,

    a determinação da última linha do intervalo pode ser feita de várias formas, dependendo do formato dos seus dados. Uma forma bastante eficiente que funciona para intervalos que estejam contidos numa única coluna exclusiva para este intervalo é a seguinte:

    Cd = 1   'Coluna desejada
    Lfim = Plan1.Cells(Rows.Count, Cd).End(xlUp).Row

    Dessa forma te atende?

    Prezado Filipe,

    Como expliquei, a coluna "C" divide a coluna "D" e entrega o resultado em % na coluna "F". Essas informações são provenientes do banco de dados e ora a planilha carrega 10 linhas, ora 100 linhas etc, depende da consulta. A questão é como criar no VB uma rotina em que ora ele calcula as 10 linhas e entrega o resultado em "F" e ora calcula 200 linhas e entrega o resulado em "F". O que estou tentando e não estou conseguindo é fazer que ao saltar a linha ele também troque a variável. Ex.
    "c1" / "d1" = "f1" depois,

    "c2/ "d2" = "f2" e assim sucessivamente, independente da qtde de linhas que tenho que calcular.


    Filipe Magno


    domingo, 20 de julho de 2014 20:05
  • Nelson,

    vc não está sendo coerente com sua dúvida. No post anterior vc disse: "Esse comando funciona quando você sabe o número de linhas a executar, mas no caso eu não sei o número de linhas a executar". Pois bem, com o que te sugeri, vc descobre facilmente o número de linhas necessárias. Assim, basta fazer o laço até este número ou inserir uma fórmula no Excel. Segue um exemplo:

    Dim Plan As Worksheet
    Dim Cd As Long, Lfim As Long, i As Long
    
    Set Plan = Plan1
    
    Cd = 3   'Coluna desejada
    Lfim = Plan.Cells(Rows.Count, Cd).End(xlUp).Row
    
    For i = 2 To Lfim
        
        Plan.Cells(i, 6).Value = Plan.Cells(i, 3).Value / Plan.Cells(i, 4).Value
    Next i
    
    Range(Cells(2, 6), Cells(Lfim, 6)).NumberFormat = "0.00%"
    Ok?

    Filipe Magno

    • Marcado como Resposta Nelson Eduardo domingo, 20 de julho de 2014 21:48
    domingo, 20 de julho de 2014 21:17