1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Macro Excel

Discussão em 'Programação' iniciada por manelito, 27 de Setembro de 2008. (Respostas: 5; Visualizações: 1918)

  1. manelito

    manelito Power Member

    Olá a todos,

    preciso de fazer uma macro para um cálculo numa folha que fiz, mas já estou com a cabeça às voltas....não oconsigo....definitivamente...eu vou tentar explicar:

    tenho um célula (A1, por exemplo) na qual introduzo valores de 1 até 25. Depois de feito o cálculo é-me apresentado numa outra célula (B1, por exemplo) o resultado feito a partir de cada um dos dados que introduzi em A1.

    O que eu queria era que o a macro fizesse o cálculo para todos os valores de A1 de 1 até 25 e me apresentasse o resultado do cálculo de cada um desses valores (B1) na forma de uma tabela.

    A1 B1
    1 (resultado)
    2 (resultado)
    3 (resultado)
    . (resultado)
    . (resultado)
    . (resultado)
    23 (resultado)
    24 (resultado)
    25 (resultado)



    O cálculo de cada um destes inputs é feito com recurso a algo assim:


    Muito obrigado!
     
    Última edição: 28 de Setembro de 2008
  2. manelito

    manelito Power Member

    ninguém me pode dar uma ajudinha...?eu posso tentar explicar melhor caso não percebam a ideia...
     
  3. manelito

    manelito Power Member

    Neste momento, a macro que eu fiz está assim:

    Código:
    Sub POT()
    '
    ' POT Macro
    ' Macro recorded 24/09/2008 by manelito
    '
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "4"
    Range("C2").Select
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "5"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "6"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "7"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "8"
    Range("C2").Select
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "9"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "10"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "11"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "12"
    Range("C2").Select
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "13"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "14"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "15"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "16"
    Range("C2").Select
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "17"
    Range("C2").Select
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "18"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "19"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "20"
    Range("C2").Select
     
    Set dataTableRange = Worksheets("Folha1").Range("X2:X26")
    Set rowInputCell = Worksheets("Folha1").Range("$C$2")
    Set columnInputCell = Worksheets("Folha1").Range("$C$2")
    Worksheets("Folha1").Range("W2:W26").Formula = "=$T$37*$C$8"
    For i = 1 To 25
    Worksheets("Folha1").Cells(i + 1, 22) = i
    Next i
    End Sub

    O problema é que na coluna B, nas linhas de 1 até 25 imprime sempre o valor do último valor calculado, para A1=25 e não para cada um dos valores de A1, de 1 até 25.

    Se alguém me puder ajudar, agradecia imenso, tenho muita urgência nisto.
    Obrigado.
     
    Última edição pelo moderador: 28 de Setembro de 2008
  4. thesmile

    thesmile Power Member

    Essa macro esta demasiado complicada faz algo do genero penso q fará o q pretendes
    Código:
    Sub calculo()
    
    'dimensionamento
    Dim i As Integer
    
    
    For i = 1 To 25
    
    'escreve os valores de A na coluna w
      Cells(i+1, 23) = i
    'calcula com base no valor na celula T4 e escreve na coluna x
      Cells(i+1, 24) = Cells(4, 20) * i
    Next
    
    End Sub
    
    ta mto simples a macro podes ir complicando conforme te der jeito
     
  5. manelito

    manelito Power Member

    Olá, antes de mais obrigado pela resposta.
    Desta forma está a multiplicar-me os valores da célula T4 pelos valores de 1 até 25. O que eu pretendo é que para cada valor de 1 até 25 que tome na célula A (a cada um desses valores na A existe um correspondente na célula T4) e que os coloque sob a forma de tabela tal como fez com a macro que me propuseste.
    Isto porque o valor de A é um valor de entrada, e o de T4 é o resultado de um cálculo e a relação entre estes dois não é directa.


    Não sei se fui claro....
    obrigado
     
    Última edição: 28 de Setembro de 2008
  6. manelito

    manelito Power Member

    Eh pá! consegui! :)

    Depois de pegar no código que partilhaste, consegui moldá-lo de forma a fazer o que eu pretendia...finalmente! :):009:

    obrigado...e já agora aqui vai o resultado:
    Código:
    Sub calculo()
    'dimensionamento
    Dim i As Integer
    
    For i = 1 To 25
    Cells(2, 3) = i
    'escreve os valores de A na coluna w
    Cells(i + 1, 23) = i
    'calcula com base no valor na celula T4 e escreve na coluna x
    Cells(i + 1, 24) = Cells(4, 20)
    Next
    End Sub
    
    Espectacular :P
    Para quem começou a fazer macros este fim de semana, está uma categoria! muito obrigado pela ajuda!

    Isto é para traçar uma curva de potência de um aerogerador, com base no cálculo aerodinâmico que existe entre as duas células que estavam na base da minha dúvida!

    Done!
     
    Última edição pelo moderador: 29 de Setembro de 2008

Partilhar esta Página